diff options
author | John Hodge <tpg@mutabah.net> | 2015-03-26 20:30:30 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2015-03-26 20:30:30 +0800 |
commit | ab649f75cfe79fd91ca60f55fb93d9fe5c9e3a53 (patch) | |
tree | 9449cad89a115a5968d49636f698495220da566d /src/parse | |
parent | 7634647e1fcb7b1b6bcefd992d65b6b25277dfcc (diff) | |
download | mrust-ab649f75cfe79fd91ca60f55fb93d9fe5c9e3a53.tar.gz |
Integer literal output, signed pattern hackery
Diffstat (limited to 'src/parse')
-rw-r--r-- | src/parse/pattern.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parse/pattern.cpp b/src/parse/pattern.cpp index 97571bc2..1da59951 100644 --- a/src/parse/pattern.cpp +++ b/src/parse/pattern.cpp @@ -167,9 +167,13 @@ AST::Pattern Parse_PatternReal1(TokenStream& lex, bool is_refutable) case TOK_DOUBLE_COLON: // 2. Paths are enum/struct names return Parse_PatternReal_Path( lex, Parse_Path(lex, true, PATH_GENERIC_EXPR), is_refutable ); - case TOK_DASH: + case TOK_DASH: { GET_CHECK_TOK(tok, lex, TOK_INTEGER); - return AST::Pattern( AST::Pattern::TagValue(), NEWNODE(AST::ExprNode_Integer, -tok.intval(), tok.datatype()) ); + auto dt = tok.datatype(); + if(dt == CORETYPE_ANY) + dt = CORETYPE_I32; + return AST::Pattern( AST::Pattern::TagValue(), NEWNODE(AST::ExprNode_Integer, -tok.intval(), dt) ); + } case TOK_INTEGER: return AST::Pattern( AST::Pattern::TagValue(), NEWNODE(AST::ExprNode_Integer, tok.intval(), tok.datatype()) ); case TOK_RWORD_TRUE: |