mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 21:11:23 +02:00
fcl-passrc: parser: dot after true,false,char,string
git-svn-id: trunk@41275 -
This commit is contained in:
parent
a387e0b9bb
commit
663ac37c1c
@ -5955,7 +5955,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
tkEOF:
|
tkEOF:
|
||||||
CheckToken(tkend);
|
CheckToken(tkend);
|
||||||
tkAt,tkAtAt,tkBraceOpen,tkIdentifier,tkNumber,tkSquaredBraceOpen,tkMinus,tkPlus,tkinherited:
|
tkAt,tkAtAt,
|
||||||
|
tkIdentifier,tkNumber,tkString,tkfalse,tktrue,tkChar,
|
||||||
|
tkBraceOpen,tkSquaredBraceOpen,
|
||||||
|
tkMinus,tkPlus,tkinherited:
|
||||||
begin
|
begin
|
||||||
// Do not check this here:
|
// Do not check this here:
|
||||||
// if (CurToken=tkAt) and not (msDelphi in CurrentModeswitches) then
|
// if (CurToken=tkAt) and not (msDelphi in CurrentModeswitches) then
|
||||||
|
@ -915,6 +915,8 @@ type
|
|||||||
Procedure TestTypeHelper_EnumDotValueFail;
|
Procedure TestTypeHelper_EnumDotValueFail;
|
||||||
Procedure TestTypeHelper_EnumHelperDotProcFail;
|
Procedure TestTypeHelper_EnumHelperDotProcFail;
|
||||||
Procedure TestTypeHelper_Enumerator;
|
Procedure TestTypeHelper_Enumerator;
|
||||||
|
Procedure TestTypeHelper_String;
|
||||||
|
Procedure TestTypeHelper_Boolean;
|
||||||
Procedure TestTypeHelper_Constructor_NewInstance;
|
Procedure TestTypeHelper_Constructor_NewInstance;
|
||||||
Procedure TestTypeHelper_InterfaceFail;
|
Procedure TestTypeHelper_InterfaceFail;
|
||||||
|
|
||||||
@ -17079,6 +17081,54 @@ begin
|
|||||||
ParseProgram;
|
ParseProgram;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestResolver.TestTypeHelper_String;
|
||||||
|
begin
|
||||||
|
StartProgram(false);
|
||||||
|
Add([
|
||||||
|
'{$modeswitch typehelpers}',
|
||||||
|
'type',
|
||||||
|
' TStringHelper = type helper for String',
|
||||||
|
' procedure DoIt;',
|
||||||
|
' end;',
|
||||||
|
' TCharHelper = type helper for char',
|
||||||
|
' procedure Fly;',
|
||||||
|
' end;',
|
||||||
|
'procedure TStringHelper.DoIt;',
|
||||||
|
'begin',
|
||||||
|
' Self[1]:=Self[2];',
|
||||||
|
'end;',
|
||||||
|
'procedure TCharHelper.Fly;',
|
||||||
|
'begin',
|
||||||
|
' Self:=''c'';',
|
||||||
|
' Self:=Self;',
|
||||||
|
'end;',
|
||||||
|
'begin',
|
||||||
|
' ''abc''.DoIt;',
|
||||||
|
' ''xyz''.DoIt();',
|
||||||
|
' ''c''.Fly;',
|
||||||
|
'']);
|
||||||
|
ParseProgram;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTestResolver.TestTypeHelper_Boolean;
|
||||||
|
begin
|
||||||
|
StartProgram(false);
|
||||||
|
Add([
|
||||||
|
'{$modeswitch typehelpers}',
|
||||||
|
'type',
|
||||||
|
' THelper = type helper for boolean',
|
||||||
|
' procedure DoIt;',
|
||||||
|
' end;',
|
||||||
|
'procedure THelper.DoIt;',
|
||||||
|
'begin',
|
||||||
|
' Self:=not Self;',
|
||||||
|
'end;',
|
||||||
|
'begin',
|
||||||
|
' false.DoIt;',
|
||||||
|
' true.DoIt();']);
|
||||||
|
ParseProgram;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestResolver.TestTypeHelper_Constructor_NewInstance;
|
procedure TTestResolver.TestTypeHelper_Constructor_NewInstance;
|
||||||
var
|
var
|
||||||
aMarker: PSrcMarker;
|
aMarker: PSrcMarker;
|
||||||
|
Loading…
Reference in New Issue
Block a user