fcl-passrc: fixed TAliasEnumType.Value

This commit is contained in:
mattias 2019-02-26 11:41:53 +00:00
parent deaa7c3af0
commit bb778bd45d
2 changed files with 26 additions and 20 deletions

View File

@ -9021,7 +9021,8 @@ begin
end end
else if LTypeEl.ClassType=TPasEnumType then else if LTypeEl.ClassType=TPasEnumType then
begin begin
if LeftResolved.IdentEl is TPasEnumType then if (LeftResolved.IdentEl is TPasType)
and (ResolveAliasType(TPasType(LeftResolved.IdentEl)).ClassType=TPasEnumType) then
begin begin
// e.g. TShiftState.ssAlt // e.g. TShiftState.ssAlt
DotScope:=PushEnumDotScope(TPasEnumType(LTypeEl)); DotScope:=PushEnumDotScope(TPasEnumType(LTypeEl));

View File

@ -3573,25 +3573,30 @@ end;
procedure TTestResolver.TestEnums; procedure TTestResolver.TestEnums;
begin begin
StartProgram(false); StartProgram(false);
Add('type {#TFlag}TFlag = ({#Red}Red, {#Green}Green, {#Blue}Blue);'); Add([
Add('var'); 'type',
Add(' {#f}{=TFlag}f: TFlag;'); ' {#TFlag}TFlag = ({#Red}Red, {#Green}Green, {#Blue}Blue);',
Add(' {#v}{=TFlag}v: TFlag = Green;'); ' {#TAlias}TAlias = TFlag;',
Add(' {#i}i: longint;'); 'var',
Add('begin'); ' {#f}{=TFlag}f: TFlag;',
Add(' {@f}f:={@Red}Red;'); ' {#v}{=TFlag}v: TFlag = Green;',
Add(' {@f}f:={@v}v;'); ' {#i}i: longint;',
Add(' if {@f}f={@Red}Red then ;'); 'begin',
Add(' if {@f}f={@v}v then ;'); ' {@f}f:={@Red}Red;',
Add(' if {@f}f>{@v}v then ;'); ' {@f}f:={@v}v;',
Add(' if {@f}f<{@v}v then ;'); ' if {@f}f={@Red}Red then ;',
Add(' if {@f}f>={@v}v then ;'); ' if {@f}f={@v}v then ;',
Add(' if {@f}f<={@v}v then ;'); ' if {@f}f>{@v}v then ;',
Add(' if {@f}f<>{@v}v then ;'); ' if {@f}f<{@v}v then ;',
Add(' if ord({@f}f)<>ord({@Red}Red) then ;'); ' if {@f}f>={@v}v then ;',
Add(' {@f}f:={@TFlag}TFlag.{@Red}Red;'); ' if {@f}f<={@v}v then ;',
Add(' {@f}f:={@TFlag}TFlag({@i}i);'); ' if {@f}f<>{@v}v then ;',
Add(' {@i}i:=longint({@f}f);'); ' if ord({@f}f)<>ord({@Red}Red) then ;',
' {@f}f:={@TFlag}TFlag.{@Red}Red;',
' {@f}f:={@TFlag}TFlag({@i}i);',
' {@i}i:=longint({@f}f);',
' {@f}f:={@TAlias}TAlias.{@Green}Green;',
'']);
ParseProgram; ParseProgram;
end; end;