Skip to content

Commit 26c582b

Browse files
committed
---
yaml --- r: 32527 b: refs/heads/dist-snap c: 73eb894 h: refs/heads/master i: 32525: 1f5436d 32523: 6ee1b17 32519: 3669753 32511: 957a53a v: v3
1 parent 6a7ef69 commit 26c582b

File tree

4 files changed

+44
-21
lines changed

4 files changed

+44
-21
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
99
refs/heads/incoming: d9317a174e434d4c99fc1a37fd7dc0d2f5328d37
10-
refs/heads/dist-snap: df790261696fb85c0cc4dee3950d7ba89804eb49
10+
refs/heads/dist-snap: 73eb89430569d80a2f3ff124514f2905b25dbe68
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/dist-snap/src/libsyntax/parse/obsolete.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ pub enum ObsoleteSyntax {
1818
ObsoleteLet,
1919
ObsoleteFieldTerminator,
2020
ObsoleteStructCtor,
21-
ObsoleteWith
21+
ObsoleteWith,
22+
ObsoleteClassMethod,
2223
}
2324

2425
impl ObsoleteSyntax : cmp::Eq {
@@ -71,6 +72,10 @@ impl parser : ObsoleteReporter {
7172
"record update is done with `..`, e.g. \
7273
`MyStruct { foo: bar, .. baz }`"
7374
),
75+
ObsoleteClassMethod => (
76+
"class method",
77+
"methods should be defined inside impls"
78+
),
7479
};
7580

7681
self.report(sp, kind, kind_str, desc);

branches/dist-snap/src/libsyntax/parse/parser.rs

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use obsolete::{
1919
ObsoleteReporter, ObsoleteSyntax,
2020
ObsoleteLowerCaseKindBounds, ObsoleteLet,
2121
ObsoleteFieldTerminator, ObsoleteStructCtor,
22-
ObsoleteWith
22+
ObsoleteWith, ObsoleteClassMethod
2323
};
2424
use ast::{_mod, add, alt_check, alt_exhaustive, arg, arm, attribute,
2525
bind_by_ref, bind_by_implicit_ref, bind_by_value, bind_by_move,
@@ -2778,25 +2778,35 @@ impl parser {
27782778
let obsolete_let = self.eat_obsolete_ident("let");
27792779
if obsolete_let { self.obsolete(copy self.last_span, ObsoleteLet) }
27802780

2781-
let a_var = self.parse_instance_var(vis);
2782-
match self.token {
2783-
token::SEMI => {
2784-
self.obsolete(copy self.span, ObsoleteFieldTerminator);
2785-
self.bump();
2786-
}
2787-
token::COMMA => {
2788-
self.bump();
2789-
}
2790-
token::RBRACE => {}
2791-
_ => {
2792-
self.span_fatal(copy self.span,
2793-
fmt!("expected `;`, `,`, or '}' but \
2794-
found `%s`",
2795-
token_to_str(self.reader,
2796-
self.token)));
2797-
}
2781+
let parse_obsolete_method =
2782+
!((obsolete_let || self.is_keyword(~"mut") ||
2783+
!self.is_any_keyword(copy self.token))
2784+
&& !self.token_is_pound_or_doc_comment(copy self.token));
2785+
2786+
if !parse_obsolete_method {
2787+
let a_var = self.parse_instance_var(vis);
2788+
match self.token {
2789+
token::SEMI => {
2790+
self.obsolete(copy self.span, ObsoleteFieldTerminator);
2791+
self.bump();
2792+
}
2793+
token::COMMA => {
2794+
self.bump();
2795+
}
2796+
token::RBRACE => {}
2797+
_ => {
2798+
self.span_fatal(copy self.span,
2799+
fmt!("expected `;`, `,`, or '}' but \
2800+
found `%s`",
2801+
token_to_str(self.reader,
2802+
self.token)));
2803+
}
2804+
}
2805+
return a_var;
2806+
} else {
2807+
self.obsolete(copy self.span, ObsoleteClassMethod);
2808+
return @method_member(self.parse_method(vis));
27982809
}
2799-
return a_var;
28002810
}
28012811

28022812
fn parse_dtor(attrs: ~[attribute]) -> class_contents {

branches/dist-snap/src/test/compile-fail/obsolete-syntax.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ struct s {
1919
//~^ ERROR obsolete syntax: struct constructor
2020
}
2121

22+
struct ss {
23+
fn foo() { }
24+
//~^ ERROR obsolete syntax: class method
25+
#[whatever]
26+
fn foo() { }
27+
//~^ ERROR obsolete syntax: class method
28+
}
29+
2230
fn obsolete_with() {
2331
struct S {
2432
foo: (),

0 commit comments

Comments
 (0)