diff options
author | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-05-09 09:43:18 -0700 |
---|---|---|
committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-05-09 09:45:38 -0700 |
commit | 5c459eefcb17ff97beebdc08ccfca21bd8fa5201 (patch) | |
tree | 0f00a773b18d64627938bc3dd3b4a85c80b99c1c /testsuite/tests/quotes | |
parent | 3c70ae032e4361b203dfcf22b0a424e8838a5037 (diff) | |
download | haskell-5c459eefcb17ff97beebdc08ccfca21bd8fa5201.tar.gz |
Revert stage 1 template-haskell. This is a combination of 5 commits.
Revert "Quick fix: drop base bound on template-haskell."
This reverts commit 3c70ae032e4361b203dfcf22b0a424e8838a5037.
Revert "Always do polymorphic typed quote check, c.f. #10384"
This reverts commit 9a43b2c1f78b3cf684646af64b9b67dc8079f58f.
Revert "RnSplice's staging test should be applied for quotes in stage1."
This reverts commit eb0ed4030374af542c0a459480d32c8d4525e48d.
Revert "Split off quotes/ from th/ for tests that can be done on stage1 compiler."
This reverts commit 21c72e7d38c96ac80d31addf67ae4b3c7a6c3bbb.
Revert "Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382."
This reverts commit 28257cae77023f2ccc4cc1c0cd1fbbd329947a00.
Diffstat (limited to 'testsuite/tests/quotes')
39 files changed, 0 insertions, 424 deletions
diff --git a/testsuite/tests/quotes/.gitignore b/testsuite/tests/quotes/.gitignore deleted file mode 100644 index 1c8a416fcd..0000000000 --- a/testsuite/tests/quotes/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -T3572 -T8633 -TH_ppr1 -TH_spliceViewPat/TH_spliceViewPat diff --git a/testsuite/tests/quotes/Makefile b/testsuite/tests/quotes/Makefile deleted file mode 100644 index 9a36a1c5fe..0000000000 --- a/testsuite/tests/quotes/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/quotes/T10384.hs b/testsuite/tests/quotes/T10384.hs deleted file mode 100644 index 773deb061a..0000000000 --- a/testsuite/tests/quotes/T10384.hs +++ /dev/null @@ -1,3 +0,0 @@ -{-# LANGUAGE TemplateHaskell, RankNTypes, ScopedTypeVariables #-} -module A where -x = \(y :: forall a. a -> a) -> [|| y ||] diff --git a/testsuite/tests/quotes/T10384.stderr b/testsuite/tests/quotes/T10384.stderr deleted file mode 100644 index f2360fd5ba..0000000000 --- a/testsuite/tests/quotes/T10384.stderr +++ /dev/null @@ -1,6 +0,0 @@ - -T10384.hs:3:37: error: - Can't splice the polymorphic local variable ‘y’ - In the Template Haskell quotation [|| y ||] - In the expression: [|| y ||] - In the expression: \ (y :: forall a. a -> a) -> [|| y ||] diff --git a/testsuite/tests/quotes/T2632.hs b/testsuite/tests/quotes/T2632.hs deleted file mode 100644 index 71f6350cc2..0000000000 --- a/testsuite/tests/quotes/T2632.hs +++ /dev/null @@ -1,14 +0,0 @@ --- Trac #2632 - -module MkData where - -import Language.Haskell.TH - -op :: Num v => v -> v -> v -op a b = a + b - -decl1 = [d| func = 0 `op` 3 |] - -decl2 = [d| op x y = x - func = 0 `op` 3 |] - diff --git a/testsuite/tests/quotes/T2931.hs b/testsuite/tests/quotes/T2931.hs deleted file mode 100644 index 43aeda0ece..0000000000 --- a/testsuite/tests/quotes/T2931.hs +++ /dev/null @@ -1,7 +0,0 @@ --- Trac #2931 - -module Foo where -a = 1 - --- NB: no newline after the 'a'! -b = 'a diff --git a/testsuite/tests/quotes/T3572.hs b/testsuite/tests/quotes/T3572.hs deleted file mode 100644 index 4717fd2735..0000000000 --- a/testsuite/tests/quotes/T3572.hs +++ /dev/null @@ -1,10 +0,0 @@ -{-# LANGUAGE EmptyDataDecls #-} - --- Trac #3572 - -module Main where - -import Language.Haskell.TH -import Language.Haskell.TH.Ppr - -main = putStrLn . pprint =<< runQ [d| data Void |] diff --git a/testsuite/tests/quotes/T3572.stdout b/testsuite/tests/quotes/T3572.stdout deleted file mode 100644 index 9df7a449ff..0000000000 --- a/testsuite/tests/quotes/T3572.stdout +++ /dev/null @@ -1 +0,0 @@ -data Void_0
diff --git a/testsuite/tests/quotes/T4056.hs b/testsuite/tests/quotes/T4056.hs deleted file mode 100644 index a9b936987c..0000000000 --- a/testsuite/tests/quotes/T4056.hs +++ /dev/null @@ -1,15 +0,0 @@ -{-# LANGUAGE TypeFamilies, RankNTypes, FlexibleContexts #-} - -module T4056 where -import Language.Haskell.TH - -astTest :: Q [Dec] -astTest = [d| - class C t where - op :: [t] -> [t] - op = undefined - |] - -class D t where - bop :: [t] -> [t] - bop = undefined diff --git a/testsuite/tests/quotes/T4169.hs b/testsuite/tests/quotes/T4169.hs deleted file mode 100644 index cdef4a2e3a..0000000000 --- a/testsuite/tests/quotes/T4169.hs +++ /dev/null @@ -1,13 +0,0 @@ --- Crashed GHC 6.12 - -module T4165 where - -import Language.Haskell.TH -class Numeric a where - fromIntegerNum :: a - fromIntegerNum = undefined - -ast :: Q [Dec] -ast = [d| - instance Numeric Int - |] diff --git a/testsuite/tests/quotes/T4170.hs b/testsuite/tests/quotes/T4170.hs deleted file mode 100644 index 46319abaf0..0000000000 --- a/testsuite/tests/quotes/T4170.hs +++ /dev/null @@ -1,12 +0,0 @@ -module T4170 where - -import Language.Haskell.TH - -class LOL a - -lol :: Q [Dec] -lol = [d| - instance LOL Int - |] - -instance LOL Int diff --git a/testsuite/tests/quotes/T5721.hs b/testsuite/tests/quotes/T5721.hs deleted file mode 100644 index ed5e7e380b..0000000000 --- a/testsuite/tests/quotes/T5721.hs +++ /dev/null @@ -1,7 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} - -module T5371 where -import Language.Haskell.TH - -f :: a -> Name -f (x :: a) = ''a diff --git a/testsuite/tests/quotes/T6062.hs b/testsuite/tests/quotes/T6062.hs deleted file mode 100644 index 342850e853..0000000000 --- a/testsuite/tests/quotes/T6062.hs +++ /dev/null @@ -1,2 +0,0 @@ -module T6062 where -x = [| False True |] diff --git a/testsuite/tests/quotes/T8455.hs b/testsuite/tests/quotes/T8455.hs deleted file mode 100644 index 69d1271b40..0000000000 --- a/testsuite/tests/quotes/T8455.hs +++ /dev/null @@ -1,5 +0,0 @@ -{-# LANGUAGE DataKinds #-} - -module T8455 where - -ty = [t| 5 |] diff --git a/testsuite/tests/quotes/T8633.hs b/testsuite/tests/quotes/T8633.hs deleted file mode 100644 index eb2b3f3a3b..0000000000 --- a/testsuite/tests/quotes/T8633.hs +++ /dev/null @@ -1,19 +0,0 @@ -module Main where -import Language.Haskell.TH.Syntax - -t1 = case mkName "^.." of - Name (OccName ".") (NameQ (ModName "^")) -> error "bug0" - Name (OccName "^..") NameS -> return () - -t2 = case mkName "Control.Lens.^.." of - Name (OccName ".") (NameQ (ModName "Control.Lens.^")) -> error "bug1" - Name (OccName "^..") (NameQ (ModName "Control.Lens")) -> return () - -t3 = case mkName "Data.Bits..&." of - Name (OccName ".&.") (NameQ (ModName "Data.Bits")) -> return () - -t4 = case mkName "abcde" of - Name (OccName "abcde") NameS -> return () - -main :: IO () -main = do t1; t2; t3; t4 diff --git a/testsuite/tests/quotes/T8759a.hs b/testsuite/tests/quotes/T8759a.hs deleted file mode 100644 index 37b65d6fcc..0000000000 --- a/testsuite/tests/quotes/T8759a.hs +++ /dev/null @@ -1,5 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module T8759a where - -foo = [d| pattern Q = False |] diff --git a/testsuite/tests/quotes/T8759a.stderr b/testsuite/tests/quotes/T8759a.stderr deleted file mode 100644 index ff0fd495df..0000000000 --- a/testsuite/tests/quotes/T8759a.stderr +++ /dev/null @@ -1,4 +0,0 @@ - -T8759a.hs:5:7: - pattern synonyms not (yet) handled by Template Haskell - pattern Q = False diff --git a/testsuite/tests/quotes/T9824.hs b/testsuite/tests/quotes/T9824.hs deleted file mode 100644 index 9a2d6fdfef..0000000000 --- a/testsuite/tests/quotes/T9824.hs +++ /dev/null @@ -1,5 +0,0 @@ -{-# OPTIONS_GHC -fwarn-unused-matches #-} - -module T9824 where - -foo = [p| (x, y) |] diff --git a/testsuite/tests/quotes/TH_abstractFamily.hs b/testsuite/tests/quotes/TH_abstractFamily.hs deleted file mode 100644 index 78d7e43931..0000000000 --- a/testsuite/tests/quotes/TH_abstractFamily.hs +++ /dev/null @@ -1,11 +0,0 @@ -module TH_abstractFamily where - -import Language.Haskell.TH - --- Empty closed type families are okay... -ds1 :: Q [Dec] -ds1 = [d| type family F a where |] - --- ...but abstract ones should result in a type error -ds2 :: Q [Dec] -ds2 = [d| type family G a where .. |] diff --git a/testsuite/tests/quotes/TH_abstractFamily.stderr b/testsuite/tests/quotes/TH_abstractFamily.stderr deleted file mode 100644 index c0aa8d274b..0000000000 --- a/testsuite/tests/quotes/TH_abstractFamily.stderr +++ /dev/null @@ -1,5 +0,0 @@ - -TH_abstractFamily.hs:11:7: - abstract closed type family not (yet) handled by Template Haskell - type family G a where - .. diff --git a/testsuite/tests/quotes/TH_bracket1.hs b/testsuite/tests/quotes/TH_bracket1.hs deleted file mode 100644 index 7dee21ba01..0000000000 --- a/testsuite/tests/quotes/TH_bracket1.hs +++ /dev/null @@ -1,7 +0,0 @@ --- Check that declarations in a bracket shadow the top-level --- declarations, rather than clashing with them. - -module TH_bracket1 where - -foo = 1 -bar = [d| foo = 1 |] diff --git a/testsuite/tests/quotes/TH_bracket2.hs b/testsuite/tests/quotes/TH_bracket2.hs deleted file mode 100644 index 2b06b9eecb..0000000000 --- a/testsuite/tests/quotes/TH_bracket2.hs +++ /dev/null @@ -1,7 +0,0 @@ -module TH_bracket2 where - -d_show = [d| data A = A - - instance Show A where - show _ = "A" - |] diff --git a/testsuite/tests/quotes/TH_bracket3.hs b/testsuite/tests/quotes/TH_bracket3.hs deleted file mode 100644 index c746d61cd3..0000000000 --- a/testsuite/tests/quotes/TH_bracket3.hs +++ /dev/null @@ -1,10 +0,0 @@ -{-# LANGUAGE MultiParamTypeClasses #-} - -module TH_bracket3 where - -d_class = [d| class Classy a b where - f :: a -> b - - instance Classy Int Bool where - f x = if x == 0 then True else False - |] diff --git a/testsuite/tests/quotes/TH_localname.hs b/testsuite/tests/quotes/TH_localname.hs deleted file mode 100644 index 5bc0e96036..0000000000 --- a/testsuite/tests/quotes/TH_localname.hs +++ /dev/null @@ -1,3 +0,0 @@ -module TH_localname where - -x = \y -> [| y |] diff --git a/testsuite/tests/quotes/TH_localname.stderr b/testsuite/tests/quotes/TH_localname.stderr deleted file mode 100644 index a83c606eb4..0000000000 --- a/testsuite/tests/quotes/TH_localname.stderr +++ /dev/null @@ -1,22 +0,0 @@ - -TH_localname.hs:3:11: error: - No instance for (Lift t0) arising from a use of ‘lift’ - The type variable ‘t0’ is ambiguous - Relevant bindings include - y :: t0 (bound at TH_localname.hs:3:6) - x :: t0 -> ExpQ (bound at TH_localname.hs:3:1) - Note: there are several potential instances: - instance (Lift a, Lift b) => Lift (Either a b) - -- Defined in ‘Language.Haskell.TH.Syntax’ - instance Lift a => Lift (Maybe a) - -- Defined in ‘Language.Haskell.TH.Syntax’ - instance Lift Int16 -- Defined in ‘Language.Haskell.TH.Syntax’ - ...plus 24 others - In the expression: lift y - In the expression: - [| y |] - pending(rn) [<y, lift y>] - In the expression: - \ y - -> [| y |] - pending(rn) [<y, lift y>] diff --git a/testsuite/tests/quotes/TH_ppr1.hs b/testsuite/tests/quotes/TH_ppr1.hs deleted file mode 100644 index 763d7682e0..0000000000 --- a/testsuite/tests/quotes/TH_ppr1.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE MultiParamTypeClasses #-} - -module Main (main) where - -import Language.Haskell.TH - -u1 :: a -u1 = undefined - -u2 :: a -u2 = undefined - -f :: a -f = undefined - -(.+.) :: a -(.+.) = undefined - -main :: IO () -main = do runQ [| f u1 u2 |] >>= p - runQ [| u1 `f` u2 |] >>= p - runQ [| (.+.) u1 u2 |] >>= p - runQ [| u1 .+. u2 |] >>= p - runQ [| (:) u1 u2 |] >>= p - runQ [| u1 : u2 |] >>= p - runQ [| \((:) x xs) -> x |] >>= p - runQ [| \(x : xs) -> x |] >>= p - runQ [d| class Foo a b where - foo :: a -> b |] >>= p - runQ [| \x -> (x, 1 `x` 2) |] >>= p - runQ [| \(+) -> ((+), 1 + 2) |] >>= p - runQ [| (f, 1 `f` 2) |] >>= p - runQ [| ((.+.), 1 .+. 2) |] >>= p - -p :: Ppr a => a -> IO () -p = putStrLn . pprint - diff --git a/testsuite/tests/quotes/TH_ppr1.stdout b/testsuite/tests/quotes/TH_ppr1.stdout deleted file mode 100644 index e969c176c3..0000000000 --- a/testsuite/tests/quotes/TH_ppr1.stdout +++ /dev/null @@ -1,14 +0,0 @@ -Main.f Main.u1 Main.u2
-Main.u1 `Main.f` Main.u2
-(Main..+.) Main.u1 Main.u2
-Main.u1 Main..+. Main.u2
-(GHC.Types.:) Main.u1 Main.u2
-Main.u1 GHC.Types.: Main.u2
-\((GHC.Types.:) x_0 xs_1) -> x_0
-\(x_0 GHC.Types.: xs_1) -> x_0
-class Foo_0 a_1 b_2
- where foo_3 :: a_1 -> b_2
-\x_0 -> (x_0, 1 `x_0` 2)
-\(+_0) -> ((+_0), 1 +_0 2)
-(Main.f, 1 `Main.f` 2)
-((Main..+.), 1 Main..+. 2)
diff --git a/testsuite/tests/quotes/TH_reifyType1.hs b/testsuite/tests/quotes/TH_reifyType1.hs deleted file mode 100644 index d8b45db271..0000000000 --- a/testsuite/tests/quotes/TH_reifyType1.hs +++ /dev/null @@ -1,13 +0,0 @@ --- test reification of monomorphic types - -module TH_reifyType1 -where - -import Language.Haskell.TH - -foo :: Int -> Int -foo x = x + 1 - -type_foo :: InfoQ -type_foo = reify 'foo - diff --git a/testsuite/tests/quotes/TH_reifyType2.hs b/testsuite/tests/quotes/TH_reifyType2.hs deleted file mode 100644 index 85615b5382..0000000000 --- a/testsuite/tests/quotes/TH_reifyType2.hs +++ /dev/null @@ -1,9 +0,0 @@ --- test reification of polymorphic types - -module TH_reifyType1 -where - -import Language.Haskell.TH - -type_length :: InfoQ -type_length = reify 'length diff --git a/testsuite/tests/quotes/TH_repE1.hs b/testsuite/tests/quotes/TH_repE1.hs deleted file mode 100644 index 1938a9bdc3..0000000000 --- a/testsuite/tests/quotes/TH_repE1.hs +++ /dev/null @@ -1,30 +0,0 @@ --- test the representation of literals and also explicit type annotations - -module TH_repE1 -where - -import Language.Haskell.TH - -integralExpr :: ExpQ -integralExpr = [| 42 |] - -intExpr :: ExpQ -intExpr = [| 42 :: Int |] - -integerExpr :: ExpQ -integerExpr = [| 42 :: Integer |] - -charExpr :: ExpQ -charExpr = [| 'x' |] - -stringExpr :: ExpQ -stringExpr = [| "A String" |] - -fractionalExpr :: ExpQ -fractionalExpr = [| 1.2 |] - -floatExpr :: ExpQ -floatExpr = [| 1.2 :: Float |] - -doubleExpr :: ExpQ -doubleExpr = [| 1.2 :: Double |] diff --git a/testsuite/tests/quotes/TH_repE3.hs b/testsuite/tests/quotes/TH_repE3.hs deleted file mode 100644 index 5f0453c1a7..0000000000 --- a/testsuite/tests/quotes/TH_repE3.hs +++ /dev/null @@ -1,19 +0,0 @@ --- test the representation of literals and also explicit type annotations - -module TH_repE1 -where - -import Language.Haskell.TH - -emptyListExpr :: ExpQ -emptyListExpr = [| [] |] - -singletonListExpr :: ExpQ -singletonListExpr = [| [4] |] - -listExpr :: ExpQ -listExpr = [| [4,5,6] |] - -consExpr :: ExpQ -consExpr = [| 4:5:6:[] |] - diff --git a/testsuite/tests/quotes/TH_scope.hs b/testsuite/tests/quotes/TH_scope.hs deleted file mode 100644 index 7674a5d1c0..0000000000 --- a/testsuite/tests/quotes/TH_scope.hs +++ /dev/null @@ -1,8 +0,0 @@ --- Test for Trac #2188 - -module TH_scope where - -f g = [d| f :: Int - f = g - g :: Int - g = 4 |] diff --git a/testsuite/tests/quotes/TH_spliceViewPat/A.hs b/testsuite/tests/quotes/TH_spliceViewPat/A.hs deleted file mode 100644 index 0147d2eca2..0000000000 --- a/testsuite/tests/quotes/TH_spliceViewPat/A.hs +++ /dev/null @@ -1,11 +0,0 @@ -{-# LANGUAGE ViewPatterns #-} -module A where - -import Language.Haskell.TH.Quote -import Language.Haskell.TH - -foo :: QuasiQuoter -foo = QuasiQuoter{quotePat = \s -> viewP [|(*2)|] (varP . mkName $ s)} - -bar :: QuasiQuoter -bar = QuasiQuoter{quotePat = \_ -> [p|((*3) -> fixed_var)|] } diff --git a/testsuite/tests/quotes/TH_spliceViewPat/Main.hs b/testsuite/tests/quotes/TH_spliceViewPat/Main.hs deleted file mode 100644 index 675ae99bf9..0000000000 --- a/testsuite/tests/quotes/TH_spliceViewPat/Main.hs +++ /dev/null @@ -1,11 +0,0 @@ -{-# LANGUAGE QuasiQuotes, ViewPatterns #-} - -module Main where - -import A - -main = do - case 1 of - [foo|x|] -> print x - case 1 of - [bar|<!anything~|] -> print fixed_var diff --git a/testsuite/tests/quotes/TH_spliceViewPat/Makefile b/testsuite/tests/quotes/TH_spliceViewPat/Makefile deleted file mode 100644 index 4a268530f1..0000000000 --- a/testsuite/tests/quotes/TH_spliceViewPat/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk - diff --git a/testsuite/tests/quotes/TH_spliceViewPat/TH_spliceViewPat.stdout b/testsuite/tests/quotes/TH_spliceViewPat/TH_spliceViewPat.stdout deleted file mode 100644 index 4792e70f33..0000000000 --- a/testsuite/tests/quotes/TH_spliceViewPat/TH_spliceViewPat.stdout +++ /dev/null @@ -1,2 +0,0 @@ -2 -3 diff --git a/testsuite/tests/quotes/TH_spliceViewPat/test.T b/testsuite/tests/quotes/TH_spliceViewPat/test.T deleted file mode 100644 index 3075ef4b1f..0000000000 --- a/testsuite/tests/quotes/TH_spliceViewPat/test.T +++ /dev/null @@ -1,9 +0,0 @@ -def f(name, opts): - opts.extra_hc_opts = '-XTemplateHaskell -package template-haskell' - -setTestOpts(f) - -test('TH_spliceViewPat', - extra_clean(['Main.o', 'Main.hi', 'A.o', 'A.hi']), - multimod_compile_and_run, - ['Main', config.ghc_th_way_flags]) diff --git a/testsuite/tests/quotes/TH_tf2.hs b/testsuite/tests/quotes/TH_tf2.hs deleted file mode 100644 index 9f313d4a3e..0000000000 --- a/testsuite/tests/quotes/TH_tf2.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE AllowAmbiguousTypes #-} -- 'bar' is ambiguous - -module TH_tf2 where - -{- -$( [d| class C a where - data T a - foo :: Bool -> T a |] ) - -$( [d| instance C Int where - data T Int = TInt Bool - foo b = TInt (b && b) |] ) - -$( [d| instance C Float where - data T Float = TFloat {flag :: Bool} - foo b = TFloat {flag = b && b} |] ) --} - -class D a where - type S a - bar :: S a -> Int - -instance D Int where - type S Int = Bool - bar c = if c then 1 else 2 diff --git a/testsuite/tests/quotes/all.T b/testsuite/tests/quotes/all.T deleted file mode 100644 index a56a50c010..0000000000 --- a/testsuite/tests/quotes/all.T +++ /dev/null @@ -1,31 +0,0 @@ -def f(name, opts): - opts.extra_hc_opts = '-XTemplateHaskell -package template-haskell' - -setTestOpts(f) - -test('T2632', normal, compile, ['']) -test('T2931', normal, compile, ['-v0']) -test('T3572', normal, compile_and_run, ['']) -test('T4056', normal, compile, ['-v0']) -test('T4169', normal, compile, ['-v0']) -test('T4170', normal, compile, ['-v0']) -test('T5721', normal, compile, ['-v0']) -test('T6062', normal, compile, ['-v0']) -test('T8455', normal, compile, ['-v0']) -test('T8633', normal, compile_and_run, ['']) -test('T8759a', normal, compile_fail, ['-v0']) -test('T9824', normal, compile, ['-v0']) -test('T10384', normal, compile_fail, ['']) - -test('TH_tf2', normal, compile, ['-v0']) -test('TH_ppr1', normal, compile_and_run, ['']) -test('TH_bracket1', normal, compile, ['']) -test('TH_bracket2', normal, compile, ['']) -test('TH_bracket3', normal, compile, ['']) -test('TH_scope', normal, compile, ['']) -test('TH_reifyType1', normal, compile, ['']) -test('TH_reifyType2', normal, compile, ['']) -test('TH_repE1', normal, compile, ['']) -test('TH_repE3', normal, compile, ['']) -test('TH_abstractFamily', normal, compile_fail, ['']) -test('TH_localname', normal, compile_fail, ['']) |