diff options
author | John Hodge <tpg@mutabah.net> | 2016-02-27 18:29:11 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-02-27 18:29:11 +0800 |
commit | 36dd3e4c5da3374ab0338c3e42d3f1901379cc70 (patch) | |
tree | 9ea47a0ff5442c78fe306466391e5e0a51247204 | |
parent | a92d91674e2863bcd401b28e72f0dcf1e7cb73fd (diff) | |
download | mrust-36dd3e4c5da3374ab0338c3e42d3f1901379cc70.tar.gz |
Parse - (hackily) support vardic function definitions
-rw-r--r-- | src/parse/root.cpp | 6 | ||||
-rw-r--r-- | src/parse/types.cpp | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp index 231094a2..00ba005f 100644 --- a/src/parse/root.cpp +++ b/src/parse/root.cpp @@ -336,6 +336,12 @@ AST::Function Parse_FunctionDef(TokenStream& lex, ::std::string abi, AST::MetaIt GET_TOK(tok, lex);
break;
}
+ if( LOOK_AHEAD(lex) == TOK_TRIPLE_DOT ) {
+ GET_TOK(tok, lex);
+ // TODO: Mark function as vardic
+ GET_TOK(tok, lex);
+ break;
+ }
args.push_back( Parse_Function_Arg(lex, !can_be_prototype) );
} while( GET_TOK(tok, lex) == TOK_COMMA );
CHECK_TOK(tok, TOK_PAREN_CLOSE);
diff --git a/src/parse/types.cpp b/src/parse/types.cpp index 7b69dbd6..e6aadbbe 100644 --- a/src/parse/types.cpp +++ b/src/parse/types.cpp @@ -227,6 +227,11 @@ TypeRef Parse_Type_Fn(TokenStream& lex, ::std::vector<::std::string> hrls) GET_CHECK_TOK(tok, lex, TOK_PAREN_OPEN); while( LOOK_AHEAD(lex) != TOK_PAREN_CLOSE ) { + if( LOOK_AHEAD(lex) == TOK_TRIPLE_DOT ) { + GET_TOK(tok, lex); + // TODO: Mark function as vardic + break; + } // Handle `ident: ` if( lex.lookahead(0) == TOK_IDENT && lex.lookahead(1) == TOK_COLON ) { GET_TOK(tok, lex); |