fcl-passrc: resolver: hint for text after final end.

git-svn-id: trunk@39329 -
This commit is contained in:
Mattias Gaertner 2018-06-28 11:23:52 +00:00
parent 541ead0b93
commit f0edd93e62
4 changed files with 23 additions and 13 deletions

View File

@ -128,7 +128,7 @@ const
nTypeIdentifierExpected = 3055;
nCannotNestAnonymousX = 3056;
nFoundCallCandidateX = 3057;
// free 3058
nTextAfterFinalIgnored = 3058;
// free 3059
// free 3060
// free 3061
@ -245,6 +245,7 @@ resourcestring
sTypeIdentifierExpected = 'Type identifier expected';
sCannotNestAnonymousX = 'Cannot nest anonymous %s';
sFoundCallCandidateX = 'Found call candidate %s';
sTextAfterFinalIgnored = 'Text after final ''end.''. ignored by compiler';
sSymbolXIsNotPortable = 'Symbol "%s" is not portable';
sSymbolXIsExperimental = 'Symbol "%s" is experimental';
sSymbolXIsNotImplemented = 'Symbol "%s" is not implemented';

View File

@ -4392,6 +4392,14 @@ begin
PopScope;
FStep:=prsFinishedModule;
if (CurrentParser<>nil) and (CurrentParser.Scanner<>nil) then
begin
CurrentParser.NextToken;
if CurrentParser.Scanner.CurToken<>tkEOF then
LogMsg(20180628131456,mtHint,nTextAfterFinalIgnored,sTextAfterFinalIgnored,
[],nil);
end;
{$IFDEF VerbosePasResolver}
writeln('TPasResolver.FinishModule END ',CurModule.Name);
{$ENDIF}

View File

@ -735,7 +735,7 @@ type
constructor Create(AFileResolver: TBaseFileResolver);
destructor Destroy; override;
procedure OpenFile(AFilename: string);
procedure FinishedModule; virtual;
procedure FinishedModule; virtual; // called by parser after end.
function FormatPath(const aFilename: string): string; virtual;
Procedure SetNonToken(aToken : TToken);
Procedure UnsetNonToken(aToken : TToken);
@ -2863,17 +2863,6 @@ begin
DoLog(mtWarning,nIllegalStateForWarnDirective,SIllegalStateForWarnDirective,[Identifier]);
exit;
end;
end
else if (Identifier[1] in ['w','W']) and (msDelphi in CurrentModeSwitches) then
begin
// delphi W number
Number:=StrToIntDef(copy(Identifier,2,10),-1);
if Number<0 then
begin
DoLog(mtWarning,nIllegalStateForWarnDirective,SIllegalStateForWarnDirective,[Identifier]);
exit;
end;
Number:=-1;
end;
if Number>=0 then

View File

@ -804,6 +804,7 @@ type
Procedure TestHint_ElementHintsMsg;
Procedure TestHint_ElementHintsAlias;
Procedure TestHint_ElementHints_WarnOff_SymbolDeprecated;
Procedure TestHint_Garbage;
// attributes
Procedure TestAttributes_Ignore;
@ -14255,6 +14256,17 @@ begin
CheckResolverUnexpectedHints(true);
end;
procedure TTestResolver.TestHint_Garbage;
begin
StartProgram(false);
Add([
'begin',
'end.']);
ParseProgram;
CheckResolverHint(mtHint,nTextAfterFinalIgnored,sTextAfterFinalIgnored);
CheckResolverUnexpectedHints(true);
end;
procedure TTestResolver.TestAttributes_Ignore;
begin
StartProgram(false);