diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/ast.yml | 7 | ||||
-rw-r--r-- | data/keywords.txt | 4 | ||||
-rw-r--r-- | data/messages.yml | 38 |
3 files changed, 17 insertions, 32 deletions
diff --git a/data/ast.yml b/data/ast.yml index 82776a8f9..cedc039a0 100644 --- a/data/ast.yml +++ b/data/ast.yml @@ -8,7 +8,7 @@ # { -'SymFlag': [ # already 28 flags! +'SymFlag': [ # already 29 flags! 'sfUsed', # read access of sym (for warnings) or simply used 'sfStar', # symbol has * visibility 'sfMinus', # symbol has - visibility @@ -27,6 +27,7 @@ 'sfResult', # variable is 'result' in proc 'sfNoSideEffect', # proc has no side effects + 'sfSideEffect', # proc may have side effects; cannot prove it has none 'sfMainModule', # module is the main module 'sfSystemModule', # module is the system module 'sfNoReturn', # proc never returns (an exit proc) @@ -47,6 +48,7 @@ 'TypeFlag': [ 'tfVarargs', # procedure has C styled varargs + 'tfNoSideEffect', # procedure type does not allow side effects 'tfFinal', # is the object final? 'tfAcyclic', # type is acyclic (for GC optimization) 'tfEnumHasWholes' # enum cannot be mapped into a range @@ -146,10 +148,11 @@ 'nkElseExpr', 'nkLambda', # lambda expression 'nkAccQuoted', # `a` as a node - 'nkHeaderQuoted', # `a(x: int)` as a node 'nkTableConstr', # a table constructor {expr: expr} 'nkQualified', # describes a.b for qualified identifiers + 'nkBind', # ``bind expr`` node + 'nkSymChoice', # symbol choice node 'nkHiddenStdConv', # an implicit standard type conversion 'nkHiddenSubConv', # an implicit type conversion from a subtype # to a supertype diff --git a/data/keywords.txt b/data/keywords.txt index d6cba0635..5d20e8aeb 100644 --- a/data/keywords.txt +++ b/data/keywords.txt @@ -1,8 +1,8 @@ abstract addr and as asm -block break +bind block break case cast const continue converter discard div -elif else end enum except exception +elif else end enum except finally for from generic if implies import in include is isnot iterator lambda diff --git a/data/messages.yml b/data/messages.yml index 5cbfe60a7..83f591e0f 100644 --- a/data/messages.yml +++ b/data/messages.yml @@ -36,19 +36,15 @@ {'errNoneSpeedOrSizeExpected': "'none', 'speed' or 'size' expected"}, {'errInvalidPragma': 'invalid pragma'}, {'errUnknownPragma': "unknown pragma: '$1'"}, -{'errPragmaXHereNotAllowed': "pragma '$1' here not allowed"}, {'errUnknownDirective': "unknown directive: '$1'"}, {'errInvalidDirective': 'invalid directive'}, {'errAtPopWithoutPush': "'pop' without a 'push' pragma"}, {'errEmptyAsm': 'empty asm statement makes no sense'}, -{'errAsgnInvalidInExpr': "'=' invalid in an expression; probably '==' meant"}, {'errInvalidIndentation': 'invalid indentation'}, {'errExceptionExpected': 'exception expected'}, {'errExceptionAlreadyHandled': 'exception already handled'}, -{'errReturnNotAllowedHere': "'return' only allowed in routine"}, {'errYieldNotAllowedHere': "'yield' only allowed in a loop of an iterator"}, {'errInvalidNumberOfYieldExpr': "invalid number of 'yield' expresions"}, -{'errReturnInvalidInIterator': "'return' not allowed in iterator"}, {'errCannotReturnExpr': 'current routine cannot return an expression'}, {'errAttemptToRedefine': "attempt to redefine '$1'"}, {'errStmtInvalidAfterReturn': @@ -78,21 +74,18 @@ {'errColonOrEqualsExpected': "':' or '=' expected, but found '$1'"}, {'errExprExpected': "expression expected, but found '$1'"}, {'errUndeclaredIdentifier': "undeclared identifier: '$1'"}, -{'errUseQualifier': "ambigious identifier: '$1' -- use a qualifier"}, -{'errTwiceForwarded': "'$1' is forwarded twice"}, +{'errUseQualifier': "ambiguous identifier: '$1' -- use a qualifier"}, {'errTypeExpected': 'type expected'}, {'errSystemNeeds': "system module needs '$1'"}, {'errExecutionOfProgramFailed': 'execution of an external program failed'}, -{'errNotOverloadable': "overloaded '$1' leads to ambigious calls"}, +{'errNotOverloadable': "overloaded '$1' leads to ambiguous calls"}, {'errInvalidArgForX': "invalid argument for '$1'"}, {'errStmtHasNoEffect': 'statement has no effect'}, {'errXExpectsTypeOrValue': "'$1' expects a type or value"}, {'errXExpectsArrayType': "'$1' expects an array type"}, {'errIteratorCannotBeInstantiated': "'$1' cannot be instantiated because its body has not been compiled yet"}, -{'errExprWithNoTypeCannotBeConverted': - 'expression with no type cannot be converted'}, -{'errExprWithNoTypeCannotBeCasted': 'expression with no type cannot be casted'}, +{'errExprXAmbiguous': "expression '$1' ambiguous in this context"}, {'errConstantDivisionByZero': 'constant division by zero'}, {'errOrdinalTypeExpected': 'ordinal type expected'}, {'errOrdinalOrFloatTypeExpected': 'ordinal or float type expected'}, @@ -112,21 +105,17 @@ {'errValueOutOfSetBounds': 'value out of set bounds'}, {'errFieldInitTwice': "field initialized twice: '$1'"}, {'errFieldNotInit': "field '$1' not initialized"}, -{'errExprCannotBeCalled': 'expression cannot be called'}, +{'errExprXCannotBeCalled': "expression '$1' cannot be called"}, {'errExprHasNoType': 'expression has no type'}, -{'errExprXHasNoType': "expression '$1' has no type"}, +{'errExprXHasNoType': "expression '$1' has no type (or is ambiguous)"}, {'errCastNotInSafeMode': "'cast' not allowed in safe mode"}, {'errExprCannotBeCastedToX': 'expression cannot be casted to $1'}, -{'errUndefinedPrefixOpr': 'undefined prefix operator: $1'}, {'errCommaOrParRiExpected': "',' or ')' expected"}, {'errCurlyLeOrParLeExpected': "'{' or '(' expected"}, {'errSectionExpected': "section ('type', 'proc', etc.) expected"}, -{'errImplemenationExpected': "'implementation' or end of file expected"}, {'errRangeExpected': 'range expected'}, -{'errInvalidTypeDescription': 'invalid type description'}, {'errAttemptToRedefineX': "attempt to redefine '$1'"}, {'errMagicOnlyInSystem': "'magic' only allowed in system module"}, -{'errUnknownOperatorX': "unkown operator: '$1'"}, {'errPowerOfTwoExpected': 'power of two expected'}, {'errStringMayNotBeEmpty': 'string literal may not be empty'}, {'errCallConvExpected': 'calling convention expected'}, @@ -165,9 +154,8 @@ {'errTypeMismatch': 'type mismatch: got ('}, {'errButExpected': 'but expected one of: '}, {'errButExpectedX': "but expected '$1'"}, -{'errAmbigiousCallXYZ': 'ambigious call; both $1 and $2 match for: $3'}, +{'errAmbiguousCallXYZ': 'ambiguous call; both $1 and $2 match for: $3'}, {'errWrongNumberOfTypeParams': 'wrong number of type parameters'}, -{'errOutParamNoDefaultValue': 'out parameters cannot have default values'}, {'errInlineProcHasNoAddress': 'an inline proc has no address'}, {'errXCannotBeInParamDecl': '$1 cannot be declared in parameter declaration'}, {'errPragmaOnlyInHeaderOfProc': @@ -177,22 +165,15 @@ {'errNoSymbolToBorrowFromFound': "no symbol to borrow from found"}, {'errDiscardValue': 'value returned by statement has to be discarded'}, {'errInvalidDiscard': 'statement returns no value that can be discarded'}, -{'errUnknownPrecedence': - "unknown precedence for operator; use 'infix: prec' pragma"}, {'errIllegalConvFromXtoY': 'conversion from $1 to $2 is invalid'}, -{'errTypeMismatchExpectedXGotY': "type mismatch: expected '$1', but got '$2'"}, {'errCannotBindXTwice': "cannot bind parameter '$1' twice"}, {'errInvalidOrderInEnumX': "invalid order in enum '$1'"}, {'errEnumXHasWholes': "enum '$1' has wholes"}, {'errExceptExpected': "'except' or 'finally' expected"}, {'errInvalidTry': "after catch all 'except' or 'finally' no section may follow"}, -{'errEofExpectedButXFound': "end of file expected, but found token '$1'"}, {'errOptionExpected': "option expected, but found '$1'"}, -{'errCannotEvaluateForwardConst': 'cannot evaluate forwarded constant'}, {'errXisNoLabel': "'$1' is not a label"}, -{'errXNeedsConcreteType': "'$1' needs to be of a non-generic type"}, {'errNotAllCasesCovered': 'not all cases are covered'}, -{'errStringRange': 'string range in case statement not allowed'}, {'errUnkownSubstitionVar': "unknown substitution variable: '$1'"}, {'errComplexStmtRequiresInd': 'complex statement requires indentation'}, {'errXisNotCallable': "'$1' is not callable"}, @@ -204,7 +185,7 @@ {'errNoReturnTypeForX': 'no return type for $1 allowed'}, {'errConvNeedsOneArg': 'a type conversion needs exactly one argument'}, {'errInvalidPragmaX': 'invalid pragma: $1'}, -{'errXNotAllowedHere': '$1 here not allowed'}, +{'errXNotAllowedHere': '$1 not allowed here'}, {'errInvalidControlFlowX': 'invalid control flow: $1'}, {'errATypeHasNoValue': 'a type has no value'}, {'errXisNoType': "invalid type: '$1'"}, @@ -214,11 +195,11 @@ {'errInvalidExpressionX': "invalid expression: '$1'"}, {'errEnumHasNoValueX': "enum has no value '$1'"}, {'errNamedExprExpected': 'named expression expected'}, -{'errNamedExprNotAllowed': 'named expression here not allowed'}, +{'errNamedExprNotAllowed': 'named expression not allowed here'}, {'errXExpectsOneTypeParam': "'$1' expects one type parameter"}, {'errArrayExpectsTwoTypeParams': 'array expects two type parameters'}, {'errInvalidVisibilityX': "invalid invisibility: '$1'"}, -{'errInitHereNotAllowed': 'initialization here not allowed'}, +{'errInitHereNotAllowed': 'initialization not allowed here'}, {'errXCannotBeAssignedTo': "'$1' cannot be assigned to"}, {'errIteratorNotAllowed': "iterators can only be defined at the module's top level"}, @@ -254,6 +235,7 @@ {'errUnhandledExceptionX': "unhandled exception: $1"}, {'errCyclicTree': "macro returned a cyclic abstract syntax tree"}, {'errXisNoMacroOrTemplate': "'$1' is no macro or template"}, +{'errXhasSideEffects': "'$1' can have side effects"}, # user error message: {'errUser': '$1'}, |