* Fixed parsing of hints in alias types

git-svn-id: trunk@15063 -
This commit is contained in:
michael 2010-03-25 21:32:11 +00:00
parent 332b67ecfb
commit 154b30b724

View File

@ -117,6 +117,7 @@ type
AParent: TPasElement): TPasElement;overload;
function CreateElement(AClass: TPTreeElement; const AName: String;
AParent: TPasElement; AVisibility: TPasMemberVisibility): TPasElement;overload;
Function IsHint(Const S : String; AHint : TPasMemberHint) : Boolean;
Function CheckHint(Element : TPasElement; ExpectSemiColon : Boolean) : TPasMemberHints;
public
Options : set of TPOptions;
@ -331,30 +332,43 @@ begin
Result:=ParseType(Parent,'');
end;
Function TPasParser.IsHint(Const S : String; AHint : TPasMemberHint) : Boolean;
Var
T : string;
begin
T:=LowerCase(S);
Result:=(T='deprecated');
If Result then
Ahint:=hDeprecated
else
begin
Result:=(T='library');
if Result then
Ahint:=hLibrary
else
begin
Result:=(T='platform');
If result then
AHint:=hPlatform;
end;
end;
end;
Function TPasParser.CheckHint(Element : TPasElement; ExpectSemiColon : Boolean) : TPasMemberHints;
Var
Found : Boolean;
h : TPasMemberHint;
begin
Result:=[];
Repeat
NextToken;
Found:=CompareText(CurTokenString,'deprecated')=0;
Found:=IsHint(CurTokenString,h);
If Found then
Include(Result,hDeprecated)
else
begin
Found:=CompareText(CurTokenString,'library')=0;
if Found then
Include(Result,hLibrary)
else
begin
Found:=CompareText(CurTokenString,'platform')=0;
If Found then
Include(Result,hPlatform);
end;
end;
Include(Result,h)
Until Not Found;
UnGetToken;
If Assigned(Element) then
@ -1180,7 +1194,8 @@ var
Prefix : String;
HadPackedModifier : Boolean; // 12/04/04 - Dave - Added
IsBitPacked : Boolean;
H : TPasMemberHint;
begin
TypeName := CurTokenString;
ExpectToken(tkEqual);
@ -1248,7 +1263,7 @@ begin
end
else
Prefix:='';
if CurToken = tkSemicolon then
if (CurToken = tkSemicolon) or IsHint(CurtokenString,h)then
begin
UngetToken;
UngetToken;
@ -1276,7 +1291,8 @@ begin
Result.Free;
raise;
end;
end else
end
else
begin
UngetToken;
UngetToken;