diff --git a/compiler/utils/ppudump.pp b/compiler/utils/ppudump.pp index d1d2bb470d..36e6f8adad 100644 --- a/compiler/utils/ppudump.pp +++ b/compiler/utils/ppudump.pp @@ -871,6 +871,7 @@ type mask : tdefstate; str : string[30]; end; + ptoken=^ttoken; const defopt : array[1..ord(high(tdefoption))] of tdefopt=( (mask:df_unique; str:'Unique Type'), @@ -893,6 +894,7 @@ var first : boolean; tokenbufsize : longint; tokenbuf : pbyte; + token : ttoken; len : sizeint; wstring : widestring; astring : ansistring; @@ -945,13 +947,14 @@ begin write(space,' Tokens: '); while i_GENERICSPECIALTOKEN then - write(arraytokeninfo[ttoken(tokenbuf[i])].str); - case ttoken(tokenbuf[i]) of + token:=ptoken(@tokenbuf[i])^; + if token<>_GENERICSPECIALTOKEN then + write(arraytokeninfo[token].str); + inc(i,SizeOf(token)); + case token of _CWCHAR, _CWSTRING : begin - inc(i); len:=psizeint(@tokenbuf[i])^; inc(i,sizeof(sizeint)); setlength(wstring,len); @@ -961,7 +964,6 @@ begin end; _CSTRING: begin - inc(i); len:=psizeint(@tokenbuf[i])^; inc(i,sizeof(sizeint)); setlength(astring,len); @@ -973,14 +975,12 @@ begin _INTCONST, _REALNUMBER : begin - inc(i); write(' ',pshortstring(@tokenbuf[i])^); inc(i,tokenbuf[i]+1); end; _ID : begin - inc(i); - inc(i); + inc(i,SizeOf(ttoken)); // idtoken write(' ',pshortstring(@tokenbuf[i])^); inc(i,tokenbuf[i]+1); { @@ -991,7 +991,6 @@ begin end; _GENERICSPECIALTOKEN: begin - inc(i); case tspecialgenerictoken(tokenbuf[i]) of ST_LOADSETTINGS: begin @@ -1031,8 +1030,6 @@ begin continue; } end; - else - inc(i); end; if i