From f430222343e18fec9f97c9b9fdfdc17667b94505 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 5 Mar 2016 21:49:35 +0800 Subject: Parse - Starting on run-fail --- Makefile | 7 ++++++- src/parse/expr.cpp | 12 ++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e39cd1f5..f79ecf7d 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,12 @@ output/core.ast: $(RUSTCSRC)src/libcore/lib.rs $(BIN) .PHONY: rust_tests RUST_TESTS_DIR := $(RUSTCSRC)src/test/ -rust_tests: $(sort $(patsubst $(RUST_TESTS_DIR)%.rs,output/rust/%.txt,$(wildcard $(RUST_TESTS_DIR)run-pass/*.rs))) +rust_tests: rust_tests-run-pass rust_tests-run-fail rust_tests-compile-fail + +DEF_RUST_TESTS = $(sort $(patsubst $(RUST_TESTS_DIR)%.rs,output/rust/%.txt,$(wildcard $(RUST_TESTS_DIR)$1/*.rs))) +rust_tests-run-pass: $(call DEF_RUST_TESTS,run-pass) +rust_tests-run-fail: $(call DEF_RUST_TESTS,run-fail) +rust_tests-compile-fail: $(call DEF_RUST_TESTS,compile-fail) output/rust/%.txt: $(RUST_TESTS_DIR)%.rs $(BIN) @mkdir -p $(dir $@) diff --git a/src/parse/expr.cpp b/src/parse/expr.cpp index 2f723ef9..a57cf487 100644 --- a/src/parse/expr.cpp +++ b/src/parse/expr.cpp @@ -939,8 +939,16 @@ ExprNodeP Parse_ExprVal_Closure(TokenStream& lex, bool is_move) CHECK_TOK(tok, TOK_PIPE); TypeRef rt; - if( GET_TOK(tok, lex) == TOK_THINARROW ) - rt = Parse_Type(lex); + if( GET_TOK(tok, lex) == TOK_THINARROW ) { + + if( GET_TOK(tok, lex) == TOK_EXCLAM ) { + rt = TypeRef(TypeRef::TagInvalid()); + } + else { + lex.putback(tok); + rt = Parse_Type(lex); + } + } else lex.putback(tok); -- cgit v1.2.3