@@ -86,18 +86,27 @@ class SymbolLoaders {
86
86
(module, modcls) => new PackageLoader (module, pkg)).entered
87
87
}
88
88
89
+ /** Whether the class to be loaded is `java.lang.Object`
90
+ *
91
+ * `java.lang.Object` should never be loaded from classfiles
92
+ */
93
+ def isObjectClass (owner : Symbol , name : PreName )(implicit ctx : Context ): Boolean =
94
+ owner.fullName.toString == " java.lang" && name.show == " Object"
95
+
89
96
/** Enter class and module with given `name` into scope of `owner`
90
97
* and give them `completer` as type.
91
98
*/
92
99
def enterClassAndModule (
93
100
owner : Symbol , name : PreName , completer : SymbolLoader ,
94
101
flags : FlagSet = EmptyFlags , scope : Scope = EmptyScope )(implicit ctx : Context ): Unit = {
95
102
val clazz = enterClass(owner, name, completer, flags, scope)
96
- val module = enterModule(
97
- owner, name, completer,
98
- modFlags = flags.toTermFlags & RetainedModuleValFlags ,
99
- clsFlags = flags.toTypeFlags & RetainedModuleClassFlags ,
100
- scope = scope)
103
+
104
+ if (! isObjectClass(owner, name))
105
+ enterModule(
106
+ owner, name, completer,
107
+ modFlags = flags.toTermFlags & RetainedModuleValFlags ,
108
+ clsFlags = flags.toTypeFlags & RetainedModuleClassFlags ,
109
+ scope = scope)
101
110
}
102
111
103
112
/** In batch mode: Enter class and module with given `name` into scope of `owner`
0 commit comments