diff options
Diffstat (limited to 'hypsrc-test/src')
-rw-r--r-- | hypsrc-test/src/ClangCppBug.hs | 21 | ||||
-rw-r--r-- | hypsrc-test/src/LinkingIdentifiers.hs | 14 | ||||
-rw-r--r-- | hypsrc-test/src/PositionPragmas.hs | 12 |
3 files changed, 47 insertions, 0 deletions
diff --git a/hypsrc-test/src/ClangCppBug.hs b/hypsrc-test/src/ClangCppBug.hs new file mode 100644 index 00000000..4b0bc35f --- /dev/null +++ b/hypsrc-test/src/ClangCppBug.hs @@ -0,0 +1,21 @@ +{-# LANGUAGE CPP #-} +module ClangCppBug where + +foo :: Int +foo = 1 + +-- Clang doesn't mind these: +#define BAX 2 +{-# INLINE bar #-} + +bar :: Int +bar = 3 + +-- But it doesn't like this: +{-# RULES +"bar/qux" bar = qux +"qux/foo" qux = foo + #-} + +qux :: Int +qux = 88 diff --git a/hypsrc-test/src/LinkingIdentifiers.hs b/hypsrc-test/src/LinkingIdentifiers.hs new file mode 100644 index 00000000..4fff9776 --- /dev/null +++ b/hypsrc-test/src/LinkingIdentifiers.hs @@ -0,0 +1,14 @@ +-- Tests that the identifers/operators are properly linked even when: +-- +-- * backquoted, parenthesized, vanilla +-- * qualified, not-qualified +-- +module LinkingIdentifiers where + +ident :: Int -> Int -> Int +x `ident` 2 = (x `ident` 2) + (x `LinkingIdentifiers.ident` 2) +ident x 2 = ident x 2 + LinkingIdentifiers.ident x 2 + +(++:++) :: Int -> Int -> Int +x ++:++ 2 = (x ++:++ 2) + (x LinkingIdentifiers.++:++ 2) +(++:++) x 2 = (++:++) x 2 + (LinkingIdentifiers.++:++) x 2 diff --git a/hypsrc-test/src/PositionPragmas.hs b/hypsrc-test/src/PositionPragmas.hs new file mode 100644 index 00000000..907316fd --- /dev/null +++ b/hypsrc-test/src/PositionPragmas.hs @@ -0,0 +1,12 @@ +module PositionPragmas where + +{-# LINE 8 "hypsrc-test/src/PositionPragmas.hs" #-} + +foo :: String +foo = bar + +{-# LINE 23 "hypsrc-test/src/PositionPragmas.hs" #-} + +bar :: String +bar = foo + |