diff options
author | John Hodge <tpg@mutabah.net> | 2016-02-27 15:05:02 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-02-27 15:05:02 +0800 |
commit | 404da3f27a39e0e0b1de17e0175b4da3d4287817 (patch) | |
tree | e12e93a74224c5ecc115ee90a1615dc0e24857da /src | |
parent | 9188cbc256efc75733af081e9f6553051e6d1e88 (diff) | |
download | mrust-404da3f27a39e0e0b1de17e0175b4da3d4287817.tar.gz |
Parse/extern - Support `static mut`
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/root.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp index f70f270f..d3d19d82 100644 --- a/src/parse/root.cpp +++ b/src/parse/root.cpp @@ -1046,13 +1046,19 @@ void Parse_ExternBlock(TokenStream& lex, AST::Module& mod, ::std::string abi) GET_CHECK_TOK(tok, lex, TOK_SEMICOLON);
break;
case TOK_RWORD_STATIC: {
+ bool is_mut = false;
+ if( GET_TOK(tok, lex) == TOK_RWORD_MUT )
+ is_mut = true;
+ else
+ lex.putback(tok);
GET_CHECK_TOK(tok, lex, TOK_IDENT);
auto name = mv$(tok.str());
GET_CHECK_TOK(tok, lex, TOK_COLON);
auto type = Parse_Type(lex);
GET_CHECK_TOK(tok, lex, TOK_SEMICOLON);
- mod.add_static(is_public, mv$(name), ::AST::Static(mv$(meta_items), ::AST::Static::STATIC, type, ::AST::Expr()));
+ auto static_class = is_mut ? ::AST::Static::MUT : ::AST::Static::STATIC;
+ mod.add_static(is_public, mv$(name), ::AST::Static(mv$(meta_items), static_class, type, ::AST::Expr()));
break; }
default:
throw ParseError::Unexpected(lex, tok, {TOK_RWORD_FN, TOK_RWORD_STATIC});
|