mirror of git://gcc.gnu.org/git/gcc.git
PR modula2/122241: Lack of spellng hints with simple errors
Following on from the initial bug fix for PR modula2/122241 this patch provides spell check hints for unknown types, variables and constants. The accuracy of the offending module end name is also improved gcc/m2/ChangeLog: PR modula2/122241 * gm2-compiler/M2Quads.mod (BuildSizeFunction): Improve error message. (BuildTSizeFunction): Improve error message. * gm2-compiler/P3Build.bnf (ProgramModule): New variable namet. Pass namet to P3EndBuildProgModule. (ImplementationModule): New variable namet. Pass namet to P3EndBuildImpModule. (ModuleDeclaration): New variable namet. Pass namet to P3EndBuildInnerModule. (DefinitionModule): New variable namet. Pass namet to P3EndBuildDefModule. * gm2-compiler/P3SymBuild.def (P3EndBuildDefModule): New parameter tokno. (P3EndBuildImpModule): Ditto. (P3EndBuildProgModule): Ditto. (EndBuildInnerModule): Ditto. * gm2-compiler/P3SymBuild.mod (P3EndBuildDefModule): New parameter tokno. Pass tokno to CheckForUnknownInModule. (P3EndBuildImpModule): Ditto. (P3EndBuildProgModule): Ditto. (EndBuildInnerModule): Ditto. * gm2-compiler/PCBuild.bnf (ProgramModule): New variable namet. Pass namet to PCEndBuildProgModule. (ImplementationModule): New variable namet. Pass namet to PCEndBuildImpModule. (ModuleDeclaration): New variable namet. Pass namet to PCEndBuildInnerModule. (DefinitionModule): New variable namet. Pass namet to PCEndBuildDefModule. * gm2-compiler/PCSymBuild.def (PCEndBuildDefModule): New parameter tokno. (PCEndBuildImpModule): Ditto. (PCEndBuildProgModule): Ditto. (PCEndBuildInnerModule): Ditto. * gm2-compiler/PCSymBuild.mod (PCEndBuildDefModule): New parameter tokno. Pass tokno to CheckForUnknownInModule. (PCEndBuildImpModule): Ditto. (PCEndBuildProgModule): Ditto. (PCEndBuildInnerModule): Ditto. * gm2-compiler/PHBuild.bnf (DefinitionModule): New variable namet. Pass namet to PHEndBuildDefModule. (ModuleDeclaration): New variable namet. Pass namet to PHEndBuildProgModule. (ImplementationModule): New variable namet. Pass namet to PHEndBuildImpModule. (ModuleDeclaration): New variable namet. Pass namet to PHEndBuildInnerModule. (DefinitionModule): New variable namet. Pass namet to PHEndBuildDefModule. * gm2-compiler/SymbolTable.def (CheckForUnknownInModule): Add tokno parameter. * gm2-compiler/SymbolTable.mod (CheckForUnknownInModule): Add tokno parameter. Pass tokno to CheckForUnknowns. (CheckForUnknowns): Reimplement. gcc/testsuite/ChangeLog: PR modula2/122241 * gm2/iso/fail/badconst.mod: New test. * gm2/iso/fail/badtype.mod: New test. * gm2/iso/fail/badvar.mod: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
parent
0c670d3845
commit
65acf3665e
|
@ -10712,7 +10712,7 @@ BEGIN
|
|||
ELSE
|
||||
resulttok := functok ;
|
||||
MetaErrorT1 (resulttok,
|
||||
'{%E}SYSTEM procedure {%kSIZE} expects a variable as its parameter, seen {%1Ed}',
|
||||
'{%E}SYSTEM procedure {%kSIZE} expects a variable or type as its parameter, seen {%1Ed}',
|
||||
OperandT (1)) ;
|
||||
ReturnVar := MakeConstLit (resulttok, MakeKey('0'), Cardinal)
|
||||
END ;
|
||||
|
@ -10777,7 +10777,7 @@ BEGIN
|
|||
GenQuadO (resulttok, SizeOp, ReturnVar, NulSym, GetSType (OperandT (1)), FALSE)
|
||||
ELSE
|
||||
MetaErrorT1 (resulttok,
|
||||
'{%E}SYSTEM procedure function {%kTSIZE} expects a variable as its first parameter, seen {%1Ed}',
|
||||
'{%E}SYSTEM procedure function {%kTSIZE} expects a variable or type as its first parameter, seen {%1Ed}',
|
||||
OperandT (1)) ;
|
||||
ReturnVar := MakeConstLit (resulttok, MakeKey ('0'), Cardinal)
|
||||
END
|
||||
|
|
|
@ -655,7 +655,7 @@ FileUnit := % Pus
|
|||
ImplementationOrProgramModule ) % PopAuto %
|
||||
=:
|
||||
|
||||
ProgramModule := % VAR modulet, endt: CARDINAL ; %
|
||||
ProgramModule := % VAR modulet, endt, namet: CARDINAL ; %
|
||||
% modulet := GetTokenNo () %
|
||||
"MODULE" % M2Error.DefaultProgramModule %
|
||||
% PushAutoOn %
|
||||
|
@ -670,12 +670,13 @@ ProgramModule := % VAR
|
|||
{ Import }
|
||||
Block % PushAutoOn %
|
||||
% endt := GetTokenNo () -1 %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) %
|
||||
% P3EndBuildProgModule %
|
||||
% P3EndBuildProgModule (namet) %
|
||||
"." % PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
ImplementationModule := % VAR modulet, endt: CARDINAL ; %
|
||||
ImplementationModule := % VAR modulet, endt, namet: CARDINAL ; %
|
||||
% modulet := GetTokenNo () %
|
||||
"IMPLEMENTATION" % M2Error.DefaultImplementationModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
|
@ -689,8 +690,9 @@ ImplementationModule := % VAR
|
|||
{ Import }
|
||||
Block % PushAutoOn %
|
||||
% endt := GetTokenNo () -1 %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) %
|
||||
% P3EndBuildImpModule %
|
||||
% P3EndBuildImpModule (namet) %
|
||||
"." % PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
@ -1503,7 +1505,7 @@ DefOptArg := "[" Ident ":" FormalType "=" ConstExpression % Bui
|
|||
|
||||
FormalType := { "ARRAY" "OF" } QualidentCheck =:
|
||||
|
||||
ModuleDeclaration := % VAR modulet: CARDINAL ; %
|
||||
ModuleDeclaration := % VAR modulet, namet: CARDINAL ; %
|
||||
% modulet := GetTokenNo () %
|
||||
"MODULE" % M2Error.DefaultInnerModule %
|
||||
% PushAutoOn %
|
||||
|
@ -1513,7 +1515,8 @@ ModuleDeclaration := % VAR
|
|||
[ Priority ] ";"
|
||||
{ Import } [ Export ]
|
||||
Block % PushAutoOn %
|
||||
Ident % EndBuildInnerModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildInnerModule (namet) %
|
||||
% PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
@ -1540,7 +1543,7 @@ WithoutFromImport := % Pus
|
|||
|
||||
Import := FromImport | WithoutFromImport =:
|
||||
|
||||
DefinitionModule := % VAR deft, endt: CARDINAL ; %
|
||||
DefinitionModule := % VAR deft, endt, namet: CARDINAL ; %
|
||||
% deft := GetTokenNo () %
|
||||
"DEFINITION" % M2Error.DefaultDefinitionModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
|
@ -1553,8 +1556,9 @@ DefinitionModule := % VAR
|
|||
]
|
||||
{ Definition } % endt := GetTokenNo () %
|
||||
"END" % PushAutoOn %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) ;
|
||||
P3EndBuildDefModule %
|
||||
P3EndBuildDefModule (namet) %
|
||||
"." % PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ PROCEDURE P3StartBuildDefModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildDefModule ;
|
||||
PROCEDURE P3EndBuildDefModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -101,7 +101,7 @@ PROCEDURE P3StartBuildImpModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildImpModule ;
|
||||
PROCEDURE P3EndBuildImpModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -138,7 +138,7 @@ PROCEDURE P3StartBuildProgModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildProgModule ;
|
||||
PROCEDURE P3EndBuildProgModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -182,7 +182,7 @@ PROCEDURE StartBuildInnerModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE EndBuildInnerModule ;
|
||||
PROCEDURE EndBuildInnerModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
|
|
@ -117,13 +117,13 @@ END P3StartBuildDefModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildDefModule ;
|
||||
PROCEDURE P3EndBuildDefModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : CARDINAL ;
|
||||
BEGIN
|
||||
Assert(CompilingDefinitionModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
M2StackSpell.Pop ;
|
||||
PopT(NameEnd) ;
|
||||
|
@ -187,13 +187,13 @@ END P3StartBuildImpModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildImpModule ;
|
||||
PROCEDURE P3EndBuildImpModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
Assert(CompilingImplementationModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
M2StackSpell.Pop ;
|
||||
PopT(NameEnd) ;
|
||||
|
@ -262,13 +262,13 @@ END P3StartBuildProgModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE P3EndBuildProgModule ;
|
||||
PROCEDURE P3EndBuildProgModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
Assert(CompilingProgramModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
@ -334,12 +334,12 @@ END StartBuildInnerModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE EndBuildInnerModule ;
|
||||
PROCEDURE EndBuildInnerModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
|
|
@ -598,7 +598,8 @@ FileUnit := % Pus
|
|||
ImplementationOrProgramModule ) % PopAuto %
|
||||
=:
|
||||
|
||||
ProgramModule := "MODULE" % M2Error.DefaultProgramModule %
|
||||
ProgramModule := "MODULE" % VAR namet: CARDINAL ; %
|
||||
% M2Error.DefaultProgramModule %
|
||||
% PushAutoOn %
|
||||
Ident % PCStartBuildProgModule %
|
||||
% PushAutoOff %
|
||||
|
@ -608,11 +609,13 @@ ProgramModule := "MODULE" % M2E
|
|||
{ Import % PCBuildImportOuterModule %
|
||||
}
|
||||
Block % PushAutoOn %
|
||||
Ident % PCEndBuildProgModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % PCEndBuildProgModule (namet) %
|
||||
"." % PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
ImplementationModule := "IMPLEMENTATION" % M2Error.DefaultImplementationModule %
|
||||
ImplementationModule := "IMPLEMENTATION" % VAR namet: CARDINAL ; %
|
||||
% M2Error.DefaultImplementationModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
Ident % PCStartBuildImpModule %
|
||||
% PushAutoOff %
|
||||
|
@ -621,8 +624,8 @@ ImplementationModule := "IMPLEMENTATION" % M2E
|
|||
{ Import % PCBuildImportOuterModule %
|
||||
}
|
||||
Block % PushAutoOn %
|
||||
|
||||
Ident % PCEndBuildImpModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % PCEndBuildImpModule (namet) %
|
||||
"." % PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
@ -1271,7 +1274,8 @@ DefOptArg := "[" Ident ":" FormalType "=" ConstExpression "]" =:
|
|||
|
||||
FormalType := { "ARRAY" "OF" } Qualident =:
|
||||
|
||||
ModuleDeclaration := "MODULE" % M2Error.DefaultInnerModule %
|
||||
ModuleDeclaration := "MODULE" % VAR namet: CARDINAL ; %
|
||||
% M2Error.DefaultInnerModule %
|
||||
% PushAutoOn %
|
||||
Ident % PCStartBuildInnerModule %
|
||||
% PushAutoOff %
|
||||
|
@ -1280,7 +1284,8 @@ ModuleDeclaration := "MODULE" % M2E
|
|||
} [ Export
|
||||
]
|
||||
Block % PushAutoOn %
|
||||
Ident % PCEndBuildInnerModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % PCEndBuildInnerModule (namet) %
|
||||
% PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
@ -1299,7 +1304,8 @@ Import := % Pus
|
|||
IdentList ";" ) % PopAuto %
|
||||
=:
|
||||
|
||||
DefinitionModule := "DEFINITION" % M2Error.DefaultDefinitionModule %
|
||||
DefinitionModule := "DEFINITION" % VAR namet: CARDINAL ; %
|
||||
% M2Error.DefaultDefinitionModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
[ "FOR" string ]
|
||||
Ident % PCStartBuildDefModule ;
|
||||
|
@ -1310,7 +1316,8 @@ DefinitionModule := "DEFINITION" % M2E
|
|||
]
|
||||
{ Definition }
|
||||
"END" % PushAutoOn %
|
||||
Ident % PCEndBuildDefModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % PCEndBuildDefModule (namet) %
|
||||
"." % PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ PROCEDURE PCStartBuildDefModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildDefModule ;
|
||||
PROCEDURE PCEndBuildDefModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -108,7 +108,7 @@ PROCEDURE PCStartBuildImpModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildImpModule ;
|
||||
PROCEDURE PCEndBuildImpModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -145,7 +145,7 @@ PROCEDURE PCStartBuildProgModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildProgModule ;
|
||||
PROCEDURE PCEndBuildProgModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
@ -182,7 +182,7 @@ PROCEDURE PCStartBuildInnerModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildInnerModule ;
|
||||
PROCEDURE PCEndBuildInnerModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
|
|
@ -257,13 +257,13 @@ END PCStartBuildDefModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildDefModule ;
|
||||
PROCEDURE PCEndBuildDefModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : CARDINAL ;
|
||||
BEGIN
|
||||
Assert(CompilingDefinitionModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
@ -325,13 +325,13 @@ END PCStartBuildImpModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildImpModule ;
|
||||
PROCEDURE PCEndBuildImpModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
Assert(CompilingImplementationModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
@ -398,13 +398,13 @@ END PCStartBuildProgModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildProgModule ;
|
||||
PROCEDURE PCEndBuildProgModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
Assert(CompilingProgramModule()) ;
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
@ -468,12 +468,12 @@ END PCStartBuildInnerModule ;
|
|||
|------------| |-----------|
|
||||
*)
|
||||
|
||||
PROCEDURE PCEndBuildInnerModule ;
|
||||
PROCEDURE PCEndBuildInnerModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
NameStart,
|
||||
NameEnd : Name ;
|
||||
BEGIN
|
||||
CheckForUnknownInModule ;
|
||||
CheckForUnknownInModule (tokno) ;
|
||||
EndScope ;
|
||||
PopT(NameEnd) ;
|
||||
PopT(NameStart) ;
|
||||
|
|
|
@ -551,7 +551,7 @@ FileUnit := % Pus
|
|||
ImplementationOrProgramModule ) % PopAuto %
|
||||
=:
|
||||
|
||||
ProgramModule := % VAR begint, endt: CARDINAL ; %
|
||||
ProgramModule := % VAR begint, endt, namet: CARDINAL ; %
|
||||
% begint := GetTokenNo () %
|
||||
"MODULE" % M2Error.DefaultProgramModule %
|
||||
% PushAutoOn %
|
||||
|
@ -566,14 +566,15 @@ ProgramModule := % VAR
|
|||
% StartBuildInit (begint) %
|
||||
Block % PushAutoOn %
|
||||
% endt := GetTokenNo () -1 %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) %
|
||||
% P3EndBuildProgModule %
|
||||
% P3EndBuildProgModule (namet) %
|
||||
"." % PopAuto ;
|
||||
EndBuildInit (endt) ;
|
||||
PopAuto %
|
||||
=:
|
||||
|
||||
ImplementationModule := % VAR begint, endt: CARDINAL ; %
|
||||
ImplementationModule := % VAR begint, endt, namet: CARDINAL ; %
|
||||
% begint := GetTokenNo () %
|
||||
"IMPLEMENTATION" % M2Error.DefaultImplementationModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
|
@ -588,8 +589,9 @@ ImplementationModule := % VAR
|
|||
% StartBuildInit (begint) %
|
||||
Block % PushAutoOn %
|
||||
% endt := GetTokenNo () -1 %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) %
|
||||
% P3EndBuildImpModule %
|
||||
% P3EndBuildImpModule (namet) %
|
||||
"." % PopAuto ;
|
||||
EndBuildInit (endt) ;
|
||||
PopAuto ;
|
||||
|
@ -1229,7 +1231,7 @@ DefOptArg := "[" Ident ":" FormalType "=" SilentConstExpression "]" =:
|
|||
|
||||
FormalType := { "ARRAY" "OF" } Qualident =:
|
||||
|
||||
ModuleDeclaration := % VAR begint: CARDINAL ; %
|
||||
ModuleDeclaration := % VAR begint, namet: CARDINAL ; %
|
||||
% begint := GetTokenNo () %
|
||||
"MODULE" % M2Error.DefaultInnerModule %
|
||||
% PushAutoOn %
|
||||
|
@ -1242,7 +1244,8 @@ ModuleDeclaration := % VAR
|
|||
} [ Export
|
||||
]
|
||||
Block % PushAutoOn %
|
||||
Ident % EndBuildInnerModule %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildInnerModule (namet) %
|
||||
% PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
@ -1258,7 +1261,7 @@ Import := "FROM" Ident "IMPORT" IdentList ";" |
|
|||
"IMPORT"
|
||||
IdentList ";" =:
|
||||
|
||||
DefinitionModule := % VAR begint, endt: CARDINAL ; %
|
||||
DefinitionModule := % VAR begint, endt, namet: CARDINAL ; %
|
||||
% begint := GetTokenNo () %
|
||||
"DEFINITION" % M2Error.DefaultDefinitionModule %
|
||||
"MODULE" % PushAutoOn %
|
||||
|
@ -1272,8 +1275,9 @@ DefinitionModule := % VAR
|
|||
]
|
||||
{ Definition } % endt := GetTokenNo () %
|
||||
"END" % PushAutoOn %
|
||||
% namet := GetTokenNo () %
|
||||
Ident % EndBuildFile (endt) ;
|
||||
P3EndBuildDefModule %
|
||||
P3EndBuildDefModule (namet) %
|
||||
"." % PopAuto ; PopAuto ; PopAuto %
|
||||
=:
|
||||
|
||||
|
|
|
@ -2124,7 +2124,7 @@ PROCEDURE CheckForUndeclaredExports (ModSym: CARDINAL) ;
|
|||
an error message is displayed.
|
||||
*)
|
||||
|
||||
PROCEDURE CheckForUnknownInModule ;
|
||||
PROCEDURE CheckForUnknownInModule (tokno: CARDINAL) ;
|
||||
|
||||
|
||||
(*
|
||||
|
|
|
@ -9585,29 +9585,29 @@ END ForeachParamSymDo ;
|
|||
an error message is displayed.
|
||||
*)
|
||||
|
||||
PROCEDURE CheckForUnknownInModule ;
|
||||
PROCEDURE CheckForUnknownInModule (tokno: CARDINAL) ;
|
||||
VAR
|
||||
pSym: PtrToSymbol ;
|
||||
BEGIN
|
||||
pSym := GetPsym(GetCurrentModuleScope()) ;
|
||||
pSym := GetPsym (GetCurrentModuleScope ()) ;
|
||||
WITH pSym^ DO
|
||||
CASE SymbolType OF
|
||||
|
||||
DefImpSym: WITH DefImp DO
|
||||
CheckForUnknowns (name, ExportQualifiedTree,
|
||||
CheckForUnknowns (tokno, name, ExportQualifiedTree,
|
||||
'EXPORT QUALIFIED') ;
|
||||
CheckForUnknowns (name, ExportUnQualifiedTree,
|
||||
CheckForUnknowns (tokno, name, ExportUnQualifiedTree,
|
||||
'EXPORT UNQUALIFIED') ;
|
||||
CheckForSymbols (ExportRequest,
|
||||
'requested by another modules import (symbols have not been exported by the appropriate definition module)') ;
|
||||
CheckForUnknowns (name, Unresolved, 'unresolved') ;
|
||||
CheckForUnknowns (name, LocalSymbols, 'locally used')
|
||||
CheckForSymbols (ExportRequest,
|
||||
'requested by another modules import (symbols have not been exported by the appropriate definition module)') ;
|
||||
CheckForUnknowns (tokno, name, Unresolved, 'unresolved') ;
|
||||
CheckForUnknowns (tokno, name, LocalSymbols, 'locally used')
|
||||
END |
|
||||
ModuleSym: WITH Module DO
|
||||
CheckForUnknowns (name, Unresolved, 'unresolved') ;
|
||||
CheckForUnknowns (name, ExportUndeclared, 'exported but undeclared') ;
|
||||
CheckForUnknowns (name, ExportTree, 'exported but undeclared') ;
|
||||
CheckForUnknowns (name, LocalSymbols, 'locally used')
|
||||
CheckForUnknowns (tokno, name, Unresolved, 'unresolved') ;
|
||||
CheckForUnknowns (tokno, name, ExportUndeclared, 'exported but undeclared') ;
|
||||
CheckForUnknowns (tokno, name, ExportTree, 'exported but undeclared') ;
|
||||
CheckForUnknowns (tokno, name, LocalSymbols, 'locally used')
|
||||
END
|
||||
|
||||
ELSE
|
||||
|
@ -9626,7 +9626,7 @@ BEGIN
|
|||
IF IsUnreportedUnknown (sym)
|
||||
THEN
|
||||
IncludeElementIntoSet (ReportedUnknowns, sym) ;
|
||||
MetaErrorStringT1 (GetFirstUsed (sym), InitString ("unknown symbol {%1EUad}"), sym)
|
||||
MetaErrorStringT1 (GetFirstUsed (sym), InitString ("unknown symbol {%1EUad} {%1&s}"), sym)
|
||||
END
|
||||
END UnknownSymbolError ;
|
||||
|
||||
|
@ -9705,22 +9705,24 @@ END Listify ;
|
|||
together with an error message.
|
||||
*)
|
||||
|
||||
PROCEDURE CheckForUnknowns (name: Name; Tree: SymbolTree;
|
||||
PROCEDURE CheckForUnknowns (tokno: CARDINAL; name: Name; Tree: SymbolTree;
|
||||
a: ARRAY OF CHAR) ;
|
||||
VAR
|
||||
s: String ;
|
||||
BEGIN
|
||||
IF DoesTreeContainAny(Tree, IsUnreportedUnknown)
|
||||
IF DoesTreeContainAny (Tree, IsUnreportedUnknown)
|
||||
THEN
|
||||
CurrentError := NewError(GetTokenNo()) ;
|
||||
s := InitString("{%E} the following unknown symbols in module %<") ;
|
||||
s := ConCat(s, Mark(InitStringCharStar(KeyToCharStar(name)))) ;
|
||||
s := ConCat(s, Mark(InitString('%> were '))) ;
|
||||
s := ConCat(s, Mark(InitString(a))) ;
|
||||
s := ConCat (s, Mark (InitString (': '))) ;
|
||||
s := ConCat (s, Mark (Listify (Tree, IsUnreportedUnknown))) ;
|
||||
MetaErrorStringT0(GetTokenNo(), s) ;
|
||||
ForeachNodeDo(Tree, UnknownSymbolError)
|
||||
ForeachNodeDo (Tree, UnknownSymbolError) ;
|
||||
IF NoOfNodes (Tree, IsUnreportedUnknown) > 0
|
||||
THEN
|
||||
s := InitString ("{%E} the following unknown symbols in module %<") ;
|
||||
s := ConCat (s, Mark (InitStringCharStar (KeyToCharStar (name)))) ;
|
||||
s := ConCat (s, Mark (InitString ('%> were '))) ;
|
||||
s := ConCat (s, Mark (InitString (a))) ;
|
||||
s := ConCat (s, Mark (InitString (': '))) ;
|
||||
s := ConCat (s, Mark (Listify (Tree, IsUnreportedUnknown))) ;
|
||||
MetaErrorStringT0 (tokno, s)
|
||||
END
|
||||
END
|
||||
END CheckForUnknowns ;
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
MODULE badconst ;
|
||||
|
||||
CONST
|
||||
foo = 1 ;
|
||||
BEGIN
|
||||
IF Foo = 1
|
||||
THEN
|
||||
END
|
||||
END badconst.
|
|
@ -0,0 +1,11 @@
|
|||
MODULE badtype ;
|
||||
|
||||
FROM SYSTEM IMPORT TSIZE ;
|
||||
|
||||
TYPE
|
||||
foo = CARDINAL ;
|
||||
BEGIN
|
||||
IF TSIZE (Foo) = 1
|
||||
THEN
|
||||
END
|
||||
END badtype.
|
|
@ -0,0 +1,7 @@
|
|||
MODULE badvar ;
|
||||
|
||||
VAR
|
||||
foo: CARDINAL ;
|
||||
BEGIN
|
||||
Foo := 1
|
||||
END badvar.
|
Loading…
Reference in New Issue