From 19bf31545fba923c38f60d134276895049838165 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 14 Jan 2010 08:43:51 +0000 Subject: fix for .net compiler (flatten is skipped). --- src/compiler/scala/tools/nsc/backend/icode/GenICode.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala index 23b75e1142..2f66f672d8 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala @@ -1410,7 +1410,14 @@ abstract class GenICode extends SubComponent { assert(ctx.clazz.symbol eq cls, "Classes are not the same: " + ctx.clazz.symbol + ", " + cls) - for (f <- cls.info.decls ; if !f.isMethod && f.isTerm) + /** Non-method term members are fields, except for moudle members. Module + * members can only happen on .NET (no flatten) for inner traits. There, + * a module symbol is generated (transformInfo in mixin) which is used + * as owner for the members of the implementation class (so that the + * backend emits them as static). + * No code is needed for this module symbol. + */ + for (f <- cls.info.decls ; if !f.isMethod && f.isTerm && !f.isModule) ctx.clazz addField new IField(f) } -- cgit v1.2.3