aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/backendconvert.icl2
-rw-r--r--frontend/syntax.dcl1
-rw-r--r--frontend/syntax.icl2
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