# file      : unit-tests/cc/lexer/preprocessor.testscript
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

# Test preprocessor lines.
#

: normal
:
$* <<EOI
#pragma message("abc")
EOI

: multiline
:
$* <<EOI
#pragma message \
( \
"abc" \
)
EOI

: comment
:
$* <<EOI
#pragma foo /*
bar
baz
*/
#pragma foo // bar baz
EOI

: line
:
$* -l <<EOI >>EOO
;
# 1 "test.cxx" 2
;
  ;
# 4
;
#line 8 "z:\\tmp\\test.hxx"
;
#line 10
;
# 5 "test.cxx"
;
EOI
';' stdin:1:1
';' test.cxx:1:1
';' test.cxx:2:3
';' test.cxx:4:1
';' z:\tmp\test.hxx:8:1
';' z:\tmp\test.hxx:10:1
';' test.cxx:5:1
EOO

: include
:
$* <<EOI 2>>EOE != 0
#include <foo/bar>
EOI
stdin:1:1: error: unexpected #include directive
EOE

: nested
:
$* <<EOI >>EOO
#define FOO(x) #y
;
EOI
';'
EOO