|
@@ -1006,7 +1006,7 @@ PRODUCTIONS
|
|
|
QbeGen.AbortFunc;
|
|
QbeGen.AbortFunc;
|
|
|
Lower.ScopeLeave;
|
|
Lower.ScopeLeave;
|
|
|
SymTab.CloseProc; .)
|
|
SymTab.CloseProc; .)
|
|
|
- | (. QbeGen.EndFuncHeader;
|
|
|
|
|
|
|
+ | (.
|
|
|
(* bind the receiver: bare
|
|
(* bind the receiver: bare
|
|
|
field names resolve
|
|
field names resolve
|
|
|
against THIS *)
|
|
against THIS *)
|
|
@@ -1174,15 +1174,7 @@ PRODUCTIONS
|
|
|
SymTab.InvalidType,
|
|
SymTab.InvalidType,
|
|
|
SymTab.ProcDepthOf(pn),
|
|
SymTab.ProcDepthOf(pn),
|
|
|
FALSE);
|
|
FALSE);
|
|
|
- IF methCls #
|
|
|
|
|
- SymTab.InvalidType THEN
|
|
|
|
|
- QbeGen.Mangled(pn,
|
|
|
|
|
- SymTab.MethUid(), mg)
|
|
|
|
|
- ELSE
|
|
|
|
|
- QbeGen.Mangled(pn,
|
|
|
|
|
- SymTab.ProcUid(pn), mg)
|
|
|
|
|
- END;
|
|
|
|
|
- QbeGen.BeginFunc(mg);
|
|
|
|
|
|
|
+ QbeGen.BeginFunc("");
|
|
|
IF methCls #
|
|
IF methCls #
|
|
|
SymTab.InvalidType THEN
|
|
SymTab.InvalidType THEN
|
|
|
(* hidden THIS receiver:
|
|
(* hidden THIS receiver:
|
|
@@ -1201,7 +1193,6 @@ PRODUCTIONS
|
|
|
[ ":" TypeIdent<t> (. IF NOT SymTab.SetProcRes(t) THEN
|
|
[ ":" TypeIdent<t> (. IF NOT SymTab.SetProcRes(t) THEN
|
|
|
SemError(235) END;
|
|
SemError(235) END;
|
|
|
Lower.SetProcRes(t);
|
|
Lower.SetProcRes(t);
|
|
|
- QbeGen.SetFuncRes(t);
|
|
|
|
|
IF (t #
|
|
IF (t #
|
|
|
SymTab.InvalidType)
|
|
SymTab.InvalidType)
|
|
|
AND ((SymTab.ClassOf(t)
|
|
AND ((SymTab.ClassOf(t)
|
|
@@ -1264,7 +1255,7 @@ PRODUCTIONS
|
|
|
SymTab.MarkExternal("");
|
|
SymTab.MarkExternal("");
|
|
|
SymTab.CloseProc;
|
|
SymTab.CloseProc;
|
|
|
QbeGen.AbortFunc; .)
|
|
QbeGen.AbortFunc; .)
|
|
|
- | (. QbeGen.EndFuncHeader; .)
|
|
|
|
|
|
|
+ |
|
|
|
Block<pn> (. AST.SetChild(astNode, 1, astStmt);
|
|
Block<pn> (. AST.SetChild(astNode, 1, astStmt);
|
|
|
AST.SetChild(astNode, 2, astBlkDecls);
|
|
AST.SetChild(astNode, 2, astBlkDecls);
|
|
|
astDecl := astNode;
|
|
astDecl := astNode;
|