Skip to content

Commit b4e547d

Browse files
committed
Remove struct ctors
1 parent 5e36a99 commit b4e547d

File tree

130 files changed

+1017
-557
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+1017
-557
lines changed

src/libsyntax/ext/pipes/proto.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,22 @@ fn protocol(name: ~str, +span: span) -> protocol {
118118
@protocol_(name, span)
119119
}
120120

121+
fn protocol_(name: ~str, span: span) -> protocol_ {
122+
protocol_ {
123+
name: name,
124+
span: span,
125+
states: DVec(),
126+
bounded: None
127+
}
128+
}
129+
121130
struct protocol_ {
122131
let name: ~str;
123132
let span: span;
124133
let states: DVec<state>;
125134

126135
let mut bounded: Option<bool>;
127136

128-
new(name: ~str, span: span) {
129-
self.name = name;
130-
self.span = span;
131-
self.states = DVec();
132-
self.bounded = None;
133-
}
134-
135137
/// Get a state.
136138
fn get_state(name: ~str) -> state {
137139
self.states.find(|i| i.name == name).get()

src/libsyntax/parse/parser.rs

Lines changed: 41 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,37 @@ pure fn maybe_append(+lhs: ~[attribute], rhs: Option<~[attribute]>)
181181

182182
/* ident is handled by common.rs */
183183

184+
fn parser(sess: parse_sess, cfg: ast::crate_cfg,
185+
+rdr: reader, ftype: file_type) -> parser {
186+
187+
let tok0 = rdr.next_token();
188+
let span0 = tok0.sp;
189+
let interner = rdr.interner();
190+
191+
parser {
192+
reader: move rdr,
193+
interner: move interner,
194+
sess: sess,
195+
cfg: cfg,
196+
file_type: ftype,
197+
token: tok0.tok,
198+
span: span0,
199+
last_span: span0,
200+
buffer: [mut
201+
{tok: tok0.tok, sp: span0},
202+
{tok: tok0.tok, sp: span0},
203+
{tok: tok0.tok, sp: span0},
204+
{tok: tok0.tok, sp: span0}
205+
]/4,
206+
buffer_start: 0,
207+
buffer_end: 0,
208+
restriction: UNRESTRICTED,
209+
quote_depth: 0u,
210+
keywords: token::keyword_table(),
211+
restricted_keywords: token::restricted_keyword_table()
212+
}
213+
}
214+
184215
struct parser {
185216
let sess: parse_sess;
186217
let cfg: crate_cfg;
@@ -198,32 +229,6 @@ struct parser {
198229
let keywords: hashmap<~str, ()>;
199230
let restricted_keywords: hashmap<~str, ()>;
200231

201-
new(sess: parse_sess, cfg: ast::crate_cfg, +rdr: reader, ftype: file_type)
202-
{
203-
self.reader <- rdr;
204-
self.interner = self.reader.interner();
205-
let tok0 = self.reader.next_token();
206-
let span0 = tok0.sp;
207-
self.sess = sess;
208-
self.cfg = cfg;
209-
self.file_type = ftype;
210-
self.token = tok0.tok;
211-
self.span = span0;
212-
self.last_span = span0;
213-
self.buffer = [mut
214-
{tok: tok0.tok, sp: span0},
215-
{tok: tok0.tok, sp: span0},
216-
{tok: tok0.tok, sp: span0},
217-
{tok: tok0.tok, sp: span0}
218-
]/4;
219-
self.buffer_start = 0;
220-
self.buffer_end = 0;
221-
self.restriction = UNRESTRICTED;
222-
self.quote_depth = 0u;
223-
self.keywords = token::keyword_table();
224-
self.restricted_keywords = token::restricted_keyword_table();
225-
}
226-
227232
drop {} /* do not copy the parser; its state is tied to outside state */
228233

229234
fn bump() {
@@ -2594,7 +2599,6 @@ struct parser {
25942599
let class_name = self.parse_value_ident();
25952600
self.parse_region_param();
25962601
let ty_params = self.parse_ty_params();
2597-
let class_path = self.ident_to_path_tys(class_name, ty_params);
25982602
let traits : ~[@trait_ref] = if self.eat(token::COLON)
25992603
{ self.parse_trait_ref_list(token::LBRACE) }
26002604
else { ~[] };
@@ -2610,7 +2614,7 @@ struct parser {
26102614
// It's a record-like struct.
26112615
fields = ~[];
26122616
while self.token != token::RBRACE {
2613-
match self.parse_class_item(class_path) {
2617+
match self.parse_class_item() {
26142618
ctor_decl(a_fn_decl, attrs, blk, s) => {
26152619
match the_ctor {
26162620
Some((_, _, _, s_first)) => {
@@ -2747,24 +2751,13 @@ struct parser {
27472751
}
27482752
}
27492753

2750-
fn parse_ctor(attrs: ~[attribute],
2751-
result_ty: ast::ty_) -> class_contents {
2752-
let lo = self.last_span.lo;
2753-
let (decl_, _) = self.parse_fn_decl(|p| p.parse_arg());
2754-
let decl = {output: @{id: self.get_id(),
2755-
node: result_ty, span: decl_.output.span},
2756-
.. decl_};
2757-
let body = self.parse_block();
2758-
ctor_decl(decl, attrs, body, mk_sp(lo, self.last_span.hi))
2759-
}
2760-
27612754
fn parse_dtor(attrs: ~[attribute]) -> class_contents {
27622755
let lo = self.last_span.lo;
27632756
let body = self.parse_block();
27642757
dtor_decl(body, attrs, mk_sp(lo, self.last_span.hi))
27652758
}
27662759

2767-
fn parse_class_item(class_name_with_tps: @path) -> class_contents {
2760+
fn parse_class_item() -> class_contents {
27682761
if self.eat_keyword(~"priv") {
27692762
// XXX: Remove after snapshot.
27702763
match self.token {
@@ -2789,12 +2782,7 @@ struct parser {
27892782

27902783
let attrs = self.parse_outer_attributes();
27912784

2792-
if self.eat_keyword(~"new") {
2793-
// result type is always the type of the class
2794-
return self.parse_ctor(attrs, ty_path(class_name_with_tps,
2795-
self.get_id()));
2796-
}
2797-
else if self.eat_keyword(~"drop") {
2785+
if self.eat_keyword(~"drop") {
27982786
return self.parse_dtor(attrs);
27992787
}
28002788
else {
@@ -3019,12 +3007,12 @@ struct parser {
30193007
}
30203008
}
30213009

3022-
fn parse_struct_def(path: @path) -> @struct_def {
3010+
fn parse_struct_def() -> @struct_def {
30233011
let mut the_dtor: Option<(blk, ~[attribute], codemap::span)> = None;
30243012
let mut fields: ~[@struct_field] = ~[];
30253013
let mut methods: ~[@method] = ~[];
30263014
while self.token != token::RBRACE {
3027-
match self.parse_class_item(path) {
3015+
match self.parse_class_item() {
30283016
ctor_decl(*) => {
30293017
self.span_fatal(copy self.span,
30303018
~"deprecated explicit \
@@ -3076,7 +3064,7 @@ struct parser {
30763064
};
30773065
}
30783066

3079-
fn parse_enum_def(ident: ast::ident, ty_params: ~[ast::ty_param])
3067+
fn parse_enum_def(ty_params: ~[ast::ty_param])
30803068
-> enum_def {
30813069
let mut variants: ~[variant] = ~[];
30823070
let mut all_nullary = true, have_disr = false;
@@ -3092,8 +3080,7 @@ struct parser {
30923080
self.fatal(~"duplicate declaration of shared fields");
30933081
}
30943082
self.expect(token::LBRACE);
3095-
let path = self.ident_to_path_tys(ident, ty_params);
3096-
common_fields = Some(self.parse_struct_def(path));
3083+
common_fields = Some(self.parse_struct_def());
30973084
again;
30983085
}
30993086

@@ -3105,16 +3092,15 @@ struct parser {
31053092
if self.eat_keyword(~"enum") {
31063093
ident = self.parse_ident();
31073094
self.expect(token::LBRACE);
3108-
let nested_enum_def = self.parse_enum_def(ident, ty_params);
3095+
let nested_enum_def = self.parse_enum_def(ty_params);
31093096
kind = enum_variant_kind(move nested_enum_def);
31103097
needs_comma = false;
31113098
} else {
31123099
ident = self.parse_value_ident();
31133100
if self.eat(token::LBRACE) {
31143101
// Parse a struct variant.
31153102
all_nullary = false;
3116-
let path = self.ident_to_path_tys(ident, ty_params);
3117-
kind = struct_variant_kind(self.parse_struct_def(path));
3103+
kind = struct_variant_kind(self.parse_struct_def());
31183104
} else if self.token == token::LPAREN {
31193105
all_nullary = false;
31203106
let arg_tys = self.parse_unspanned_seq(
@@ -3176,7 +3162,7 @@ struct parser {
31763162
}
31773163
self.expect(token::LBRACE);
31783164

3179-
let enum_definition = self.parse_enum_def(id, ty_params);
3165+
let enum_definition = self.parse_enum_def(ty_params);
31803166
(id, item_enum(enum_definition, ty_params), None)
31813167
}
31823168

src/libsyntax/parse/token.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,6 @@ fn restricted_keyword_table() -> hashmap<~str, ()> {
422422
~"if", ~"impl", ~"import",
423423
~"let", ~"log", ~"loop",
424424
~"match", ~"mod", ~"module", ~"move", ~"mut",
425-
~"new",
426425
~"owned",
427426
~"pure",
428427
~"ref", ~"return",

src/rustc/driver/rustc.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,10 @@ fn monitor(+f: fn~(diagnostic::emitter)) {
241241
242242
struct finally {
243243
let ch: comm::Chan<monitor_msg>;
244-
new(ch: comm::Chan<monitor_msg>) { self.ch = ch; }
245244
drop { comm::send(self.ch, done); }
246245
}
247246
248-
let _finally = finally(ch);
247+
let _finally = finally { ch: ch };
249248
250249
f(demitter)
251250
} {

src/rustc/lib/llvm.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,10 +1175,15 @@ fn fn_ty_param_tys(fn_ty: TypeRef) -> ~[TypeRef] unsafe {
11751175

11761176
struct target_data_res {
11771177
let TD: TargetDataRef;
1178-
new(TD: TargetDataRef) { self.TD = TD; }
11791178
drop { llvm::LLVMDisposeTargetData(self.TD); }
11801179
}
11811180

1181+
fn target_data_res(TD: TargetDataRef) -> target_data_res {
1182+
target_data_res {
1183+
TD: TD
1184+
}
1185+
}
1186+
11821187
type target_data = {lltd: TargetDataRef, dtor: @target_data_res};
11831188

11841189
fn mk_target_data(string_rep: ~str) -> target_data {
@@ -1191,10 +1196,15 @@ fn mk_target_data(string_rep: ~str) -> target_data {
11911196

11921197
struct pass_manager_res {
11931198
let PM: PassManagerRef;
1194-
new(PM: PassManagerRef) { self.PM = PM; }
11951199
drop { llvm::LLVMDisposePassManager(self.PM); }
11961200
}
11971201

1202+
fn pass_manager_res(PM: PassManagerRef) -> pass_manager_res {
1203+
pass_manager_res {
1204+
PM: PM
1205+
}
1206+
}
1207+
11981208
type pass_manager = {llpm: PassManagerRef, dtor: @pass_manager_res};
11991209

12001210
fn mk_pass_manager() -> pass_manager {
@@ -1206,10 +1216,15 @@ fn mk_pass_manager() -> pass_manager {
12061216

12071217
struct object_file_res {
12081218
let ObjectFile: ObjectFileRef;
1209-
new(ObjectFile: ObjectFileRef) { self.ObjectFile = ObjectFile; }
12101219
drop { llvm::LLVMDisposeObjectFile(self.ObjectFile); }
12111220
}
12121221

1222+
fn object_file_res(ObjectFile: ObjectFileRef) -> object_file_res{
1223+
object_file_res {
1224+
ObjectFile: ObjectFile
1225+
}
1226+
}
1227+
12131228
type object_file = {llof: ObjectFileRef, dtor: @object_file_res};
12141229

12151230
fn mk_object_file(llmb: MemoryBufferRef) -> Option<object_file> {
@@ -1222,10 +1237,15 @@ fn mk_object_file(llmb: MemoryBufferRef) -> Option<object_file> {
12221237

12231238
struct section_iter_res {
12241239
let SI: SectionIteratorRef;
1225-
new(SI: SectionIteratorRef) { self.SI = SI; }
12261240
drop { llvm::LLVMDisposeSectionIterator(self.SI); }
12271241
}
12281242

1243+
fn section_iter_res(SI: SectionIteratorRef) -> section_iter_res {
1244+
section_iter_res {
1245+
SI: SI
1246+
}
1247+
}
1248+
12291249
type section_iter = {llsi: SectionIteratorRef, dtor: @section_iter_res};
12301250

12311251
fn mk_section_iter(llof: ObjectFileRef) -> section_iter {

src/rustc/metadata/decoder.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,10 +442,12 @@ struct path_entry {
442442
let path_string: ~str;
443443
// The definition, implementation, or field that this path corresponds to.
444444
let def_like: def_like;
445+
}
445446

446-
new(path_string: ~str, def_like: def_like) {
447-
self.path_string = path_string;
448-
self.def_like = def_like;
447+
fn path_entry(path_string: ~str, def_like: def_like) -> path_entry {
448+
path_entry {
449+
path_string: path_string,
450+
def_like: def_like
449451
}
450452
}
451453

0 commit comments

Comments
 (0)