aboutsummaryrefslogtreecommitdiff
path: root/frontend/parse.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/parse.icl')
-rw-r--r--frontend/parse.icl23
1 files changed, 13 insertions, 10 deletions
diff --git a/frontend/parse.icl b/frontend/parse.icl
index 95e7b9d..85e3364 100644
--- a/frontend/parse.icl
+++ b/frontend/parse.icl
@@ -3020,18 +3020,9 @@ trySimpleTypeT token attr pState
trySimpleTypeT_after_OpenToken :: !Token !TypeAttribute !ParseState -> (!ParseResult, !AType, !ParseState)
trySimpleTypeT_after_OpenToken CommaToken attr pState
- # (tup_arity, pState) = determine_arity_of_tuple 2 pState
+ # (tup_arity, pState) = determine_arity_of_tuple "tuple type" 2 pState
tuple_symbol = makeTupleTypeSymbol tup_arity 0
= (ParseOk, {at_attribute = attr, at_type = TA tuple_symbol []}, pState)
- where
- determine_arity_of_tuple :: !Int !ParseState -> (!Int, !ParseState)
- determine_arity_of_tuple arity pState
- # (token, pState) = nextToken TypeContext pState
- | CommaToken == token
- = determine_arity_of_tuple (inc arity) pState
- | CloseToken == token
- = (arity, pState)
- = (arity, parseError "tuple type" (Yes token) ")" pState)
trySimpleTypeT_after_OpenToken ArrowToken attr pState
# (token, pState) = nextToken TypeContext pState
| token == CloseToken
@@ -3062,6 +3053,15 @@ trySimpleTypeT_after_OpenToken_and_type CommaToken annot_with_pos atype attr pSt
trySimpleTypeT_after_OpenToken_and_type token annot_with_pos atype attr pState
= (ParseFailWithError, atype, parseError "Simple type" (Yes token) "')' or ','" pState)
+determine_arity_of_tuple :: !String !Int !ParseState -> (!Int, !ParseState)
+determine_arity_of_tuple error arity pState
+ # (token, pState) = nextToken TypeContext pState
+ | CommaToken == token
+ = determine_arity_of_tuple error (inc arity) pState
+ | CloseToken == token
+ = (arity, pState)
+ = (arity, parseError error (Yes token) ")" pState)
+
instance try BasicType
where
try IntTypeToken pState = (Yes BT_Int , pState)
@@ -3592,6 +3592,9 @@ trySimpleExpressionT OpenToken pState
CloseToken
#! unit_cons_ident = predefined_idents.[PD_UnitConsSymbol]
-> (True,PE_Ident unit_cons_ident,pState)
+ CommaToken
+ #! (tup_arity, pState) = determine_arity_of_tuple "tuple constructor" 2 pState
+ -> (True, PE_Ident predefined_idents.[GetTupleConsIndex tup_arity], pState)
_
# (args=:[exp:exps], pState) = want_expression_list_t token pState
pState = wantToken FunctionContext "expression list" CloseToken pState