mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-09-01 21:20:13 +02:00
fcl-passrc: fixed TAliasEnumType.Value
This commit is contained in:
parent
deaa7c3af0
commit
bb778bd45d
@ -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));
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user