[fpc-devel] Some thoughts on multi-line string support, and a possible syntax that I think is perfectly clean and Pascal-ish.

Ben Grasset operator97 at gmail.com
Sat Jul 6 15:56:03 CEST 2019


On Sat, Jul 6, 2019 at 9:10 AM Ryan Joseph <genericptr at gmail.com> wrote:

> Btw, here is the "Illegal expression” error which I mentioned before but
> lost track of.
>
> ==========
>
> {$mode objfpc}
>
> program test;
>
> const lines: ansistring = `
>   #version 150
>
>   uniform sampler2D textures[8];
>   in vec2 vertexTexCoord;
>   in vec4 vertexColor;
>   in float vertexUVMap;
>   out vec4 fragColor;
>
>   void main()
>   {
>     if (vertexUVMap == 255) {
>       fragColor = vertexColor;
>     } else {
>       fragColor = texture(textures[int(vertexUVMap)], vertexTexCoord.st);
>       if (vertexColor.a < fragColor.a) {
>         fragColor.a = vertexColor.a;
>       }
>     }
>
>     // TODO: testing
>     fragColor = vec4(1,0,0,1);
>   }
> `;
>
> var
>   s: ansistring = lines;
> begin
>   writeln(lines);
> end.
>
> Regards,
>         Ryan Joseph
>

That really is an illegal expression (I.E. once again expected behavior)
whether multi-line strings are involved or not. The following is equally
invalid:

{$mode objfpc}

program test;

const lines: ansistring = 'just a single line string';

var
  s: ansistring = lines;
begin
  writeln(lines);
end.

You cannot under any circumstances initialize a variable with a "typed"
constant, because typed constants are themselves mutable by default.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190706/c4d967c4/attachment.html>


More information about the fpc-devel mailing list