From caeaaad9861902593c74323ab0d3fed60d415d21 Mon Sep 17 00:00:00 2001 From: michael Date: Sat, 8 Oct 2016 17:10:11 +0000 Subject: [PATCH] * Helper should not be a token git-svn-id: trunk@34671 - --- packages/fcl-passrc/src/pparser.pp | 8 ++++---- packages/fcl-passrc/src/pscanner.pp | 2 -- packages/fcl-passrc/tests/tcclasstype.pas | 10 ++++++++++ packages/fcl-passrc/tests/tcscanner.pas | 2 +- packages/fcl-passrc/tests/tcvarparser.pas | 24 +++++++++++++++++++++++ packages/fcl-passrc/tests/testpassrc.lpi | 2 +- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index 9cc5cb090a..55ea82a44f 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -1249,7 +1249,7 @@ begin tkType: begin NextToken; - isHelper:=Curtoken=tkHelper; + isHelper:=CurTokenIsIdentifier('helper'); UnGetToken; if isHelper then Result:=ParseClassDecl(Parent,NamePos,TypeName,okTypeHelper,PM) @@ -1268,7 +1268,7 @@ begin tkRecord: begin NextToken; - if (Curtoken=tkHelper) then + if CurTokenIsIdentifier('Helper') then begin UnGetToken; Result:=ParseClassDecl(Parent,NamePos,TypeName,okRecordHelper,PM); @@ -4676,7 +4676,7 @@ begin break; UngetToken; ExpectToken(tkComma); - Element:=ParseType(AType,Scanner.CurSourcePos); // search interface. + Element:=ParseType(AType,Scanner.CurSourcePos,'',False); // search interface. if assigned(element) then AType.Interfaces.add(element); end; @@ -4727,7 +4727,7 @@ begin TPasClassOfType(Result).DestType := ParseType(Result,Scanner.CurSourcePos); exit; end; - if (CurToken = tkHelper) then + if (CurTokenIsIdentifier('Helper')) then begin if Not (AObjKind in [okClass,okTypeHelper,okRecordHelper]) then ParseExc(nParserHelperNotAllowed,SParserHelperNotAllowed,[ObjKindNames[AObjKind]]); diff --git a/packages/fcl-passrc/src/pscanner.pp b/packages/fcl-passrc/src/pscanner.pp index f0fc084d17..513c7c8245 100644 --- a/packages/fcl-passrc/src/pscanner.pp +++ b/packages/fcl-passrc/src/pscanner.pp @@ -139,7 +139,6 @@ type tkfunction, tkgeneric, tkgoto, - tkHelper, tkif, tkimplementation, tkin, @@ -501,7 +500,6 @@ const 'function', 'generic', 'goto', - 'helper', 'if', 'implementation', 'in', diff --git a/packages/fcl-passrc/tests/tcclasstype.pas b/packages/fcl-passrc/tests/tcclasstype.pas index 512b108fb8..9676ed3421 100644 --- a/packages/fcl-passrc/tests/tcclasstype.pas +++ b/packages/fcl-passrc/tests/tcclasstype.pas @@ -73,6 +73,7 @@ type Procedure TestOneField; Procedure TestOneFieldComment; procedure TestOneFieldStatic; + Procedure TestOneHelperField; Procedure TestOneVarField; Procedure TestOneClassField; Procedure TestOneFieldVisibility; @@ -524,6 +525,15 @@ begin AssertTrue('Have static field',vmStatic in TPasVariable(Field1).VarModifiers); end; +procedure TTestClassType.TestOneHelperField; +begin + AddMember('helper : integer'); + ParseClass; + AssertNotNull('Have 1 field',Field1); + AssertMemberName('helper'); + AssertVisibility; +end; + procedure TTestClassType.TestOneFieldComment; begin AddComment:=true; diff --git a/packages/fcl-passrc/tests/tcscanner.pas b/packages/fcl-passrc/tests/tcscanner.pas index bcb2783fdd..b5b9e2f75b 100644 --- a/packages/fcl-passrc/tests/tcscanner.pas +++ b/packages/fcl-passrc/tests/tcscanner.pas @@ -895,7 +895,7 @@ end; procedure TTestScanner.TestHelper; begin - TestToken(tkHelper,'helper'); + TestToken(tkIdentifier,'helper'); end; diff --git a/packages/fcl-passrc/tests/tcvarparser.pas b/packages/fcl-passrc/tests/tcvarparser.pas index 58bae61867..8f1a38d271 100644 --- a/packages/fcl-passrc/tests/tcvarparser.pas +++ b/packages/fcl-passrc/tests/tcvarparser.pas @@ -26,6 +26,8 @@ Type Procedure TearDown; override; Published Procedure TestSimpleVar; + Procedure TestSimpleVarHelperName; + procedure TestSimpleVarHelperType; Procedure TestSimpleVarDeprecated; Procedure TestSimpleVarPlatform; Procedure TestSimpleVarInitialized; @@ -120,6 +122,28 @@ begin AssertVariableType('b'); end; +procedure TTestVarParser.TestSimpleVarHelperName; + +Var + R : TPasVariable; + +begin + Add('Var'); + Add(' Helper : integer;'); +// Writeln(source.text); + ParseDeclarations; + AssertEquals('One variable definition',1,Declarations.Variables.Count); + AssertEquals('First declaration is type definition.',TPasVariable,TObject(Declarations.Variables[0]).ClassType); + R:=TPasVariable(Declarations.Variables[0]); + AssertEquals('First declaration has correct name.','Helper',R.Name); +end; + +procedure TTestVarParser.TestSimpleVarHelperType; +begin + ParseVar('helper',''); + AssertVariableType('helper'); +end; + procedure TTestVarParser.TestSimpleVarDeprecated; begin ParseVar('b','deprecated'); diff --git a/packages/fcl-passrc/tests/testpassrc.lpi b/packages/fcl-passrc/tests/testpassrc.lpi index bfcc15590b..bb0965a811 100644 --- a/packages/fcl-passrc/tests/testpassrc.lpi +++ b/packages/fcl-passrc/tests/testpassrc.lpi @@ -30,7 +30,7 @@ - +