diff options
author | ronny | 2001-12-12 15:51:59 +0000 |
---|---|---|
committer | ronny | 2001-12-12 15:51:59 +0000 |
commit | fdf4a8caf999c3d64c56bb2d3457718f496bf1a7 (patch) | |
tree | 22b27005bf1aa1d78a65fa4b5088489fa654c2a6 /frontend/parse.icl | |
parent | enforce consistency of defining symbols in rhs (diff) |
don't allow local nodedefs (defined with =:) with a specified type
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@927 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/parse.icl')
-rw-r--r-- | frontend/parse.icl | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/frontend/parse.icl b/frontend/parse.icl index 7ff0b12..8b38c9d 100644 --- a/frontend/parse.icl +++ b/frontend/parse.icl @@ -557,8 +557,13 @@ where | isIclContext parseContext && isLocalContext parseContext && (token == EqualToken || token == DefinesColonToken) && /* PK isLowerCaseName name.id_name && */ not (isClassOrInstanceDefsContext parseContext) # (rhs, _, pState) = wantRhs False (RhsDefiningSymbolExact token) (tokenBack pState) - = (PD_NodeDef pos (PE_Ident name) rhs, pState) - + | token == EqualToken + = (PD_Function pos name False [] rhs FK_NodeDefOrFunction, pState) + // otherwise // token == DefinesColonToken + | isGlobalContext parseContext + = (PD_Function pos name False [] rhs FK_Caf, pState) + // otherwise + = (PD_NodeDef pos (PE_Ident name) rhs, pState) want_rhs_of_def parseContext (Yes (name, is_infix), args) token pos pState # code_allowed = code_block_allowed token (token, pState) = nextToken FunctionContext pState @@ -782,21 +787,22 @@ isDefiningSymbol RhsDefiningSymbolRuleOrMacro observed definingSymbolToFunKind :: RhsDefiningSymbol -> FunKind definingSymbolToFunKind (RhsDefiningSymbolExact defining_token) - = token_to_fun_kind defining_token - where - token_to_fun_kind ColonDefinesToken - = FK_Macro - token_to_fun_kind EqualToken - = FK_Function cNameNotLocationDependent - token_to_fun_kind DoubleArrowToken - = FK_Function cNameNotLocationDependent - token_to_fun_kind DefinesColonToken - = FK_Caf - token_to_fun_kind _ - = FK_Unknown + = definingTokenToFunKind defining_token definingSymbolToFunKind _ = FK_Unknown +definingTokenToFunKind :: Token -> FunKind +definingTokenToFunKind ColonDefinesToken + = FK_Macro +definingTokenToFunKind EqualToken + = FK_Function cNameNotLocationDependent +definingTokenToFunKind DoubleArrowToken + = FK_Function cNameNotLocationDependent +definingTokenToFunKind DefinesColonToken + = FK_Caf +definingTokenToFunKind _ + = FK_Unknown + wantRhs :: !Bool !RhsDefiningSymbol !ParseState -> (!Rhs, !RhsDefiningSymbol, !ParseState) // FunctionAltDefRhs wantRhs localsExpected definingSymbol pState # (alts, definingSymbol, pState) = want_LetsFunctionBody definingSymbol pState |