summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-05-23 08:18:17 -0700
committerPaul Phillips <paulp@improving.org>2012-05-23 08:43:09 -0700
commit006e12a119e6fd5fc40584d4edb4c11f4ffdf7f9 (patch)
tree8c61c9cdb58a99a43b8cf828a7f2eb93f36215f3
parentd3bb612195dbaa8996ff98187cd51452a5f72f6c (diff)
downloadscala-006e12a119e6fd5fc40584d4edb4c11f4ffdf7f9.tar.gz
scala-006e12a119e6fd5fc40584d4edb4c11f4ffdf7f9.tar.bz2
scala-006e12a119e6fd5fc40584d4edb4c11f4ffdf7f9.zip
Relax -Xlint warning for implicit classes. Closes SI-5809.
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala2
-rw-r--r--test/files/pos/t5809.flags1
-rw-r--r--test/files/pos/t5809.scala10
3 files changed, 12 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 2f2278251b..b4f42a5033 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -636,7 +636,7 @@ trait Namers extends MethodSynthesis {
classAndNamerOfModule(m) = (tree, null)
}
val owner = tree.symbol.owner
- if (settings.lint.value && owner.isPackageObjectClass) {
+ if (settings.lint.value && owner.isPackageObjectClass && !mods.isImplicit) {
context.unit.warning(tree.pos,
"it is not recommended to define classes/objects inside of package objects.\n" +
"If possible, define " + tree.symbol + " in " + owner.skipPackageObject + " instead."
diff --git a/test/files/pos/t5809.flags b/test/files/pos/t5809.flags
new file mode 100644
index 0000000000..e93641e931
--- /dev/null
+++ b/test/files/pos/t5809.flags
@@ -0,0 +1 @@
+-Xlint -Xfatal-warnings \ No newline at end of file
diff --git a/test/files/pos/t5809.scala b/test/files/pos/t5809.scala
new file mode 100644
index 0000000000..8f6ce708d2
--- /dev/null
+++ b/test/files/pos/t5809.scala
@@ -0,0 +1,10 @@
+package scala.reflect
+
+package object api {
+ implicit class PimpedExpr[T](expr: Universe # Expr[T]) {
+ def runtimeEval: T = {
+ println("hello, dear")
+ expr.eval
+ }
+ }
+} \ No newline at end of file