diff options
-rw-r--r-- | backend/backendconvert.icl | 2 | ||||
-rw-r--r-- | frontend/syntax.dcl | 1 | ||||
-rw-r--r-- | frontend/syntax.icl | 2 |
3 files changed, 5 insertions, 0 deletions
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl index a005f04..a196f12 100644 --- a/backend/backendconvert.icl +++ b/backend/backendconvert.icl @@ -1696,6 +1696,8 @@ convertRootExpr aliasDummyId (Case kees=:{case_expr, case_guards}) main_dcl_modu -> abort "backendconvert:defaultCase, case without id" // otherwise = DefaultCaseNone +convertRootExpr _ (FailExpr fail_ident) _ + = beNormalNode (beLiteralSymbol BEFailSymb fail_ident.id_name) beNoArgs convertRootExpr _ expr main_dcl_module_n = convertExpr expr main_dcl_module_n diff --git a/frontend/syntax.dcl b/frontend/syntax.dcl index 15d9c02..7d10d81 100644 --- a/frontend/syntax.dcl +++ b/frontend/syntax.dcl @@ -1235,6 +1235,7 @@ cIsNotStrict :== False | TypeCodeExpression !TypeCodeExpression | EE | NoBind ExprInfoPtr /* auxiliary, to store fields that are not specified in a record expression */ + | FailExpr !Ident // only allowed on (case) root positions :: CodeBinding variable :== Env String variable diff --git a/frontend/syntax.icl b/frontend/syntax.icl index 09c8e73..9db1f27 100644 --- a/frontend/syntax.icl +++ b/frontend/syntax.icl @@ -1226,6 +1226,7 @@ cIsNotStrict :== False | TypeCodeExpression !TypeCodeExpression | EE | NoBind ExprInfoPtr /* auxiliary, to store fields that are not specified in a record expression */ + | FailExpr !Ident // only allowed on (case) root positions :: CodeBinding variable :== Env String variable @@ -1746,6 +1747,7 @@ where (<<<) file (FreeVar {fv_name}) = file <<< fv_name (<<<) file (ClassVariable info_ptr) = file <<< "ClassVariable " <<< info_ptr + (<<<) file (FailExpr _) = file <<< "** FAIL **" (<<<) file expr = abort ("<<< (Expression) [line 1290]" )//<<- expr) instance <<< LetBind |