Don't add struct names to the value name space if there's no constructor
Closes #3149
This commit is contained in:
parent
c5fbff01ce
commit
c7d60ee053
@ -987,22 +987,30 @@ class Resolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
item_class(struct_definition, _) => {
|
item_class(struct_definition, _) => {
|
||||||
let (name_bindings, new_parent) = self.add_child(atom, parent,
|
let (name_bindings, new_parent) =
|
||||||
~[ValueNS, TypeNS], sp);
|
match struct_definition.ctor {
|
||||||
|
|
||||||
(*name_bindings).define_type(def_ty(local_def(item.id)), sp);
|
|
||||||
|
|
||||||
match struct_definition.ctor {
|
|
||||||
none => {
|
none => {
|
||||||
// Nothing to do.
|
let (name_bindings, new_parent) = self.add_child(atom,
|
||||||
|
parent, ~[TypeNS], sp);
|
||||||
|
|
||||||
|
(*name_bindings).define_type(def_ty(
|
||||||
|
local_def(item.id)), sp);
|
||||||
|
(name_bindings, new_parent)
|
||||||
}
|
}
|
||||||
some(ctor) => {
|
some(ctor) => {
|
||||||
|
let (name_bindings, new_parent) = self.add_child(atom,
|
||||||
|
parent, ~[ValueNS, TypeNS], sp);
|
||||||
|
|
||||||
|
(*name_bindings).define_type(def_ty(
|
||||||
|
local_def(item.id)), sp);
|
||||||
|
|
||||||
let purity = ctor.node.dec.purity;
|
let purity = ctor.node.dec.purity;
|
||||||
let ctor_def = def_fn(local_def(ctor.node.id),
|
let ctor_def = def_fn(local_def(ctor.node.id),
|
||||||
purity);
|
purity);
|
||||||
(*name_bindings).define_value(ctor_def, sp);
|
(*name_bindings).define_value(ctor_def, sp);
|
||||||
|
(name_bindings, new_parent)
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// Create the set of implementation information that the
|
// Create the set of implementation information that the
|
||||||
// implementation scopes (ImplScopes) need and write it into
|
// implementation scopes (ImplScopes) need and write it into
|
||||||
|
24
src/test/run-pass/issue-3149.rs
Normal file
24
src/test/run-pass/issue-3149.rs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import Num = num::num;
|
||||||
|
|
||||||
|
pure fn Matrix4<T:copy Num>(m11: T, m12: T, m13: T, m14: T,
|
||||||
|
m21: T, m22: T, m23: T, m24: T,
|
||||||
|
m31: T, m32: T, m33: T, m34: T,
|
||||||
|
m41: T, m42: T, m43: T, m44: T)
|
||||||
|
-> Matrix4<T> {
|
||||||
|
|
||||||
|
Matrix4 {
|
||||||
|
m11: m11, m12: m12, m13: m13, m14: m14,
|
||||||
|
m21: m21, m22: m22, m23: m23, m24: m24,
|
||||||
|
m31: m31, m32: m32, m33: m33, m34: m34,
|
||||||
|
m41: m41, m42: m42, m43: m43, m44: m44
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Matrix4<T:copy Num> {
|
||||||
|
let m11: T; let m12: T; let m13: T; let m14: T;
|
||||||
|
let m21: T; let m22: T; let m23: T; let m24: T;
|
||||||
|
let m31: T; let m32: T; let m33: T; let m34: T;
|
||||||
|
let m41: T; let m42: T; let m43: T; let m44: T;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
Loading…
Reference in New Issue
Block a user