mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 03:09:11 +02:00
fcl-passrc: resolver: hint for text after final end.
git-svn-id: trunk@39329 -
This commit is contained in:
parent
541ead0b93
commit
f0edd93e62
@ -128,7 +128,7 @@ const
|
|||||||
nTypeIdentifierExpected = 3055;
|
nTypeIdentifierExpected = 3055;
|
||||||
nCannotNestAnonymousX = 3056;
|
nCannotNestAnonymousX = 3056;
|
||||||
nFoundCallCandidateX = 3057;
|
nFoundCallCandidateX = 3057;
|
||||||
// free 3058
|
nTextAfterFinalIgnored = 3058;
|
||||||
// free 3059
|
// free 3059
|
||||||
// free 3060
|
// free 3060
|
||||||
// free 3061
|
// free 3061
|
||||||
@ -245,6 +245,7 @@ resourcestring
|
|||||||
sTypeIdentifierExpected = 'Type identifier expected';
|
sTypeIdentifierExpected = 'Type identifier expected';
|
||||||
sCannotNestAnonymousX = 'Cannot nest anonymous %s';
|
sCannotNestAnonymousX = 'Cannot nest anonymous %s';
|
||||||
sFoundCallCandidateX = 'Found call candidate %s';
|
sFoundCallCandidateX = 'Found call candidate %s';
|
||||||
|
sTextAfterFinalIgnored = 'Text after final ''end.''. ignored by compiler';
|
||||||
sSymbolXIsNotPortable = 'Symbol "%s" is not portable';
|
sSymbolXIsNotPortable = 'Symbol "%s" is not portable';
|
||||||
sSymbolXIsExperimental = 'Symbol "%s" is experimental';
|
sSymbolXIsExperimental = 'Symbol "%s" is experimental';
|
||||||
sSymbolXIsNotImplemented = 'Symbol "%s" is not implemented';
|
sSymbolXIsNotImplemented = 'Symbol "%s" is not implemented';
|
||||||
|
@ -4392,6 +4392,14 @@ begin
|
|||||||
PopScope;
|
PopScope;
|
||||||
|
|
||||||
FStep:=prsFinishedModule;
|
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}
|
{$IFDEF VerbosePasResolver}
|
||||||
writeln('TPasResolver.FinishModule END ',CurModule.Name);
|
writeln('TPasResolver.FinishModule END ',CurModule.Name);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
@ -735,7 +735,7 @@ type
|
|||||||
constructor Create(AFileResolver: TBaseFileResolver);
|
constructor Create(AFileResolver: TBaseFileResolver);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure OpenFile(AFilename: string);
|
procedure OpenFile(AFilename: string);
|
||||||
procedure FinishedModule; virtual;
|
procedure FinishedModule; virtual; // called by parser after end.
|
||||||
function FormatPath(const aFilename: string): string; virtual;
|
function FormatPath(const aFilename: string): string; virtual;
|
||||||
Procedure SetNonToken(aToken : TToken);
|
Procedure SetNonToken(aToken : TToken);
|
||||||
Procedure UnsetNonToken(aToken : TToken);
|
Procedure UnsetNonToken(aToken : TToken);
|
||||||
@ -2863,17 +2863,6 @@ begin
|
|||||||
DoLog(mtWarning,nIllegalStateForWarnDirective,SIllegalStateForWarnDirective,[Identifier]);
|
DoLog(mtWarning,nIllegalStateForWarnDirective,SIllegalStateForWarnDirective,[Identifier]);
|
||||||
exit;
|
exit;
|
||||||
end;
|
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;
|
end;
|
||||||
|
|
||||||
if Number>=0 then
|
if Number>=0 then
|
||||||
|
@ -804,6 +804,7 @@ type
|
|||||||
Procedure TestHint_ElementHintsMsg;
|
Procedure TestHint_ElementHintsMsg;
|
||||||
Procedure TestHint_ElementHintsAlias;
|
Procedure TestHint_ElementHintsAlias;
|
||||||
Procedure TestHint_ElementHints_WarnOff_SymbolDeprecated;
|
Procedure TestHint_ElementHints_WarnOff_SymbolDeprecated;
|
||||||
|
Procedure TestHint_Garbage;
|
||||||
|
|
||||||
// attributes
|
// attributes
|
||||||
Procedure TestAttributes_Ignore;
|
Procedure TestAttributes_Ignore;
|
||||||
@ -14255,6 +14256,17 @@ begin
|
|||||||
CheckResolverUnexpectedHints(true);
|
CheckResolverUnexpectedHints(true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestResolver.TestHint_Garbage;
|
||||||
|
begin
|
||||||
|
StartProgram(false);
|
||||||
|
Add([
|
||||||
|
'begin',
|
||||||
|
'end.']);
|
||||||
|
ParseProgram;
|
||||||
|
CheckResolverHint(mtHint,nTextAfterFinalIgnored,sTextAfterFinalIgnored);
|
||||||
|
CheckResolverUnexpectedHints(true);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestResolver.TestAttributes_Ignore;
|
procedure TTestResolver.TestAttributes_Ignore;
|
||||||
begin
|
begin
|
||||||
StartProgram(false);
|
StartProgram(false);
|
||||||
|
Loading…
Reference in New Issue
Block a user