summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala2
-rw-r--r--test/files/neg/bug1838.check7
-rw-r--r--test/files/neg/bug1838.scala7
3 files changed, 16 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index ab65225a78..3a7880f326 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -1003,6 +1003,8 @@ trait Namers { self: Analyzer =>
context.error(sym.pos, "`implicit' modifier can be used only for values, variables and methods")
if (sym.hasFlag(IMPLICIT) && sym.owner.isPackageClass && !inIDE)
context.error(sym.pos, "`implicit' modifier cannot be used for top-level objects")
+ if (sym.hasFlag(SEALED) && !sym.isClass)
+ context.error(sym.pos, "`sealed' modifier can be used only for classes")
if (sym.hasFlag(ABSTRACT) && !sym.isClass)
context.error(sym.pos, "`abstract' modifier can be used only for classes; " +
"\nit should be omitted for abstract members")
diff --git a/test/files/neg/bug1838.check b/test/files/neg/bug1838.check
new file mode 100644
index 0000000000..0c08bfe283
--- /dev/null
+++ b/test/files/neg/bug1838.check
@@ -0,0 +1,7 @@
+bug1838.scala:6: error: `sealed' modifier can be used only for classes
+ sealed val v = 0
+ ^
+bug1838.scala:5: error: `sealed' modifier can be used only for classes
+ sealed def f = 0
+ ^
+two errors found
diff --git a/test/files/neg/bug1838.scala b/test/files/neg/bug1838.scala
new file mode 100644
index 0000000000..7c418e74e1
--- /dev/null
+++ b/test/files/neg/bug1838.scala
@@ -0,0 +1,7 @@
+package test
+
+class A {
+ sealed class B
+ sealed def f = 0
+ sealed val v = 0
+} \ No newline at end of file