summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2015-03-26 20:30:30 +0800
committerJohn Hodge <tpg@mutabah.net>2015-03-26 20:30:30 +0800
commitab649f75cfe79fd91ca60f55fb93d9fe5c9e3a53 (patch)
tree9449cad89a115a5968d49636f698495220da566d /src/parse
parent7634647e1fcb7b1b6bcefd992d65b6b25277dfcc (diff)
downloadmrust-ab649f75cfe79fd91ca60f55fb93d9fe5c9e3a53.tar.gz
Integer literal output, signed pattern hackery
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/pattern.cpp8
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: