scala> class A defined class A scala> object A // warn defined object A warning: previously defined class A is not a companion to object A. Companions must be defined together; you may wish to use :paste mode for this. scala> trait B defined trait B scala> object B // warn defined object B warning: previously defined trait B is not a companion to object B. Companions must be defined together; you may wish to use :paste mode for this. scala> object C defined object C scala> object Bippy defined object Bippy scala> class C // warn defined class C warning: previously defined object C is not a companion to class C. Companions must be defined together; you may wish to use :paste mode for this. scala> class D defined class D scala> def D = 0 // no warn D: Int scala> val D = 0 // no warn D: Int = 0 scala> object E defined object E scala> var E = 0 // no warn E: Int = 0 scala> object F defined object F scala> type F = Int // no warn defined type alias F scala> :power Power mode enabled. :phase is at typer. import scala.tools.nsc._, intp.global._, definitions._ Try :help or completions for vals._ and power._ scala> object lookup { import intp._ def apply(name: String): Symbol = types(name) orElse terms(name) def types(name: String): Symbol = replScope lookup (TypeName(name)) orElse getClassIfDefined(name) def terms(name: String): Symbol = replScope lookup (TermName(name)) orElse getModuleIfDefined(name) def types[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol def terms[T: global.TypeTag] : Symbol = typeOf[T].termSymbol def apply[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol } defined object lookup scala> lookup("F") // this now works as a result of changing .typeSymbol to .typeSymbolDirect in IMain#Request#definedSymbols res0: $r.intp.global.Symbol = type F scala> :quit