Skip to content

Commit 049e1f9

Browse files
committed
libsyntax: Accept static instead of const for globals
1 parent 2e7ec80 commit 049e1f9

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

src/libsyntax/parse/parser.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -3477,7 +3477,12 @@ pub impl Parser {
34773477
fn parse_item_foreign_const(&self, vis: ast::visibility,
34783478
+attrs: ~[attribute]) -> @foreign_item {
34793479
let lo = self.span.lo;
3480-
self.expect_keyword(&~"const");
3480+
3481+
// XXX: Obsolete; remove after snap.
3482+
if !self.eat_keyword(&~"const") {
3483+
self.expect_keyword(&~"static");
3484+
}
3485+
34813486
let ident = self.parse_ident();
34823487
self.expect(&token::COLON);
34833488
let ty = self.parse_ty(false);
@@ -3506,7 +3511,7 @@ pub impl Parser {
35063511

35073512
fn parse_foreign_item(&self, +attrs: ~[attribute]) -> @foreign_item {
35083513
let vis = self.parse_visibility();
3509-
if self.is_keyword(&~"const") {
3514+
if self.is_keyword(&~"const") || self.is_keyword(&~"static") {
35103515
self.parse_item_foreign_const(vis, attrs)
35113516
} else {
35123517
self.parse_item_foreign_fn(attrs)
@@ -3864,13 +3869,18 @@ pub impl Parser {
38643869
visibility = inherited;
38653870
}
38663871

3867-
if items_allowed && self.eat_keyword(&~"const") {
3872+
if items_allowed &&
3873+
(self.is_keyword(&~"const") ||
3874+
(self.is_keyword(&~"static") &&
3875+
!self.token_is_keyword(&~"fn", &self.look_ahead(1)))) {
38683876
// CONST ITEM
3877+
self.bump();
38693878
let (ident, item_, extra_attrs) = self.parse_item_const();
38703879
return iovi_item(self.mk_item(lo, self.last_span.hi, ident, item_,
38713880
visibility,
38723881
maybe_append(attrs, extra_attrs)));
3873-
} else if foreign_items_allowed && self.is_keyword(&~"const") {
3882+
} else if foreign_items_allowed &&
3883+
(self.is_keyword(&~"const") || self.is_keyword(&~"static")) {
38743884
// FOREIGN CONST ITEM
38753885
let item = self.parse_item_foreign_const(visibility, attrs);
38763886
return iovi_foreign_item(item);

src/libsyntax/print/pprust.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ pub fn print_foreign_item(s: @ps, item: @ast::foreign_item) {
452452
end(s); // end the outer fn box
453453
}
454454
ast::foreign_item_const(t) => {
455-
head(s, ~"const");
455+
head(s, ~"static");
456456
print_ident(s, item.ident);
457457
word_space(s, ~":");
458458
print_type(s, t);
@@ -471,7 +471,7 @@ pub fn print_item(s: @ps, &&item: @ast::item) {
471471
(s.ann.pre)(ann_node);
472472
match /*bad*/ copy item.node {
473473
ast::item_const(ty, expr) => {
474-
head(s, visibility_qualified(item.vis, ~"const"));
474+
head(s, visibility_qualified(item.vis, ~"static"));
475475
print_ident(s, item.ident);
476476
word_space(s, ~":");
477477
print_type(s, ty);
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
use core::io::println;
2+
3+
static FOO: int = 3;
4+
5+
fn main() {
6+
println(fmt!("%d", FOO));
7+
}
8+

0 commit comments

Comments
 (0)