diff --git a/.gitattributes b/.gitattributes index 40b939d1a8..c119f68b60 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12280,6 +12280,7 @@ tests/webtbs/tw2129b.pp svneol=native#text/plain tests/webtbs/tw2131.pp svneol=native#text/plain tests/webtbs/tw21443.pp svneol=native#text/plain tests/webtbs/tw2145.pp svneol=native#text/plain +tests/webtbs/tw21472.pp svneol=native#text/pascal tests/webtbs/tw2158.pp svneol=native#text/plain tests/webtbs/tw2159.pp svneol=native#text/plain tests/webtbs/tw2163.pp svneol=native#text/plain diff --git a/compiler/scanner.pas b/compiler/scanner.pas index 3777e562ae..b712b18dbc 100644 --- a/compiler/scanner.pas +++ b/compiler/scanner.pas @@ -1743,6 +1743,7 @@ In case not, the value returned can be arbitrary. args : string; hp : tinputfile; found : boolean; + macroIsString : boolean; begin current_scanner.skipspace; args:=current_scanner.readcomment; @@ -1760,6 +1761,7 @@ In case not, the value returned can be arbitrary. { save old } path:=hs; { first check for internal macros } + macroIsString:=true; if hs='TIME' then hs:=gettimestr else @@ -1771,6 +1773,12 @@ In case not, the value returned can be arbitrary. else if hs='LINE' then hs:=tostr(current_filepos.line) + else + if hs='LINENUM' then + begin + hs:=tostr(current_filepos.line); + macroIsString:=false; + end else if hs='FPCVERSION' then hs:=version_string @@ -1791,9 +1799,10 @@ In case not, the value returned can be arbitrary. if hs='' then Message1(scan_w_include_env_not_found,path); { make it a stringconst } - hs:=''''+hs+''''; + if macroIsString then + hs:=''''+hs+''''; current_scanner.insertmacro(path,@hs[1],length(hs), - current_scanner.line_no,current_scanner.inputfile.ref_index); + current_scanner.line_no,current_scanner.inputfile.ref_index); end else begin diff --git a/tests/webtbs/tw21472.pp b/tests/webtbs/tw21472.pp new file mode 100644 index 0000000000..519edfbb8b --- /dev/null +++ b/tests/webtbs/tw21472.pp @@ -0,0 +1,7 @@ +var + s : string; + i : integer; +begin + s := {$I %LINE%}; + i := {$I %LINENUM%} +end.