From bf05808e4e9d9aaaa3f08673ce8fc2e521861764 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Thu, 5 Jan 2012 12:27:47 -0800 Subject: Optimization in refchecks. Making the inherited java vararg check cheaper. --- src/compiler/scala/reflect/internal/Types.scala | 3 +++ src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 2 +- test/files/pos/t1459/App.scala | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala index 844d6b79e3..998eae0cc1 100644 --- a/src/compiler/scala/reflect/internal/Types.scala +++ b/src/compiler/scala/reflect/internal/Types.scala @@ -499,6 +499,9 @@ trait Types extends api.Types { self: SymbolTable => * Alternatives of overloaded symbol appear in the order they are declared. */ def decl(name: Name): Symbol = findDecl(name, 0) + + /** A list of all non-private members defined or declared in this type. */ + def nonPrivateDecls: List[Symbol] = decls filter (x => !x.isPrivate) toList /** The non-private defined or declared members with name `name` in this type; * an OverloadedSymbol if several exist, NoSymbol if none exist. diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index ace38bb4cb..f9689e4b14 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -154,7 +154,7 @@ abstract class RefChecks extends InfoTransform with reflect.internal.transform.R def isJavaVarargsAncestor(clazz: Symbol) = ( clazz.isClass && clazz.isJavaDefined - && (clazz.info.nonPrivateMembers exists isJavaVarArgsMethod) + && (clazz.info.nonPrivateDecls exists isJavaVarArgsMethod) ) /** Add bridges for vararg methods that extend Java vararg methods diff --git a/test/files/pos/t1459/App.scala b/test/files/pos/t1459/App.scala index 651b285b17..36e5022e94 100755 --- a/test/files/pos/t1459/App.scala +++ b/test/files/pos/t1459/App.scala @@ -1,7 +1,7 @@ package foo import base._ -object App extends Application { +object App extends scala.App { class Concrete extends AbstractBase { override def doStuff(params:java.lang.String*): Unit = println("doStuff invoked") } -- cgit v1.2.3