summaryrefslogtreecommitdiff
path: root/ghc/compiler/javaGen
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/compiler/javaGen')
-rw-r--r--ghc/compiler/javaGen/JavaGen.lhs7
1 files changed, 5 insertions, 2 deletions
diff --git a/ghc/compiler/javaGen/JavaGen.lhs b/ghc/compiler/javaGen/JavaGen.lhs
index 0fd4b9e9c1..513d99a16b 100644
--- a/ghc/compiler/javaGen/JavaGen.lhs
+++ b/ghc/compiler/javaGen/JavaGen.lhs
@@ -599,9 +599,12 @@ new env@(Env _ pairs) typ args Nothing =
new env typ [] (Just inner) =
-- anon. inner class
do { innerName <- genAnonInnerClassName
- ; frees <- liftClass env innerName inner [] []
- ; return (mkNew env typ [ Var name | name <- frees ])
+ ; frees <- liftClass env innerName inner [unType typ] []
+ ; return (New (Type [innerName]) [ Var name | name <- frees ] Nothing)
}
+ where unType (Type [name]) = name
+ unType _ = error "incorrect type style"
+
new env typ _ (Just inner) = error "cant handle inner class with args"
liftClass :: Env -> Name -> [Decl] -> [Name] -> [Name] -> LifterM [ Name ]