diff options
author | Hubert Plociniczak <hubert.plociniczak@gmail.com> | 2012-10-25 18:52:39 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-12-02 21:26:48 +0100 |
commit | d9928d59f9b21265f783fe781ad1d3a4ff93bb6e (patch) | |
tree | 995882a03b32c19ae015e515ca3336372fe0973d | |
parent | f16f4ab157293ac6860d4b00578b983c90b8fc62 (diff) | |
download | scala-d9928d59f9b21265f783fe781ad1d3a4ff93bb6e.tar.gz scala-d9928d59f9b21265f783fe781ad1d3a4ff93bb6e.tar.bz2 scala-d9928d59f9b21265f783fe781ad1d3a4ff93bb6e.zip |
Fixes SI-6558: typecheck lazy annotation info using non-silent context.
Make context for typing lazy annotations always non-silent. If lazy annotation info was created in local (silent) context, error could go unnoticed because later they would still use silent typer for typing the annotation.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 6 | ||||
-rw-r--r-- | test/files/neg/t6558.check | 4 | ||||
-rw-r--r-- | test/files/neg/t6558.scala | 9 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 36edd46f25..193c2bc76e 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -1260,7 +1260,11 @@ trait Namers extends MethodSynthesis { case defn: MemberDef => val ainfos = defn.mods.annotations filterNot (_ eq null) map { ann => // need to be lazy, #1782. beforeTyper to allow inferView in annotation args, SI-5892. - AnnotationInfo lazily beforeTyper(typer typedAnnotation ann) + AnnotationInfo lazily { + val context1 = typer.context.make(ann) + context1.setReportErrors() + beforeTyper(newTyper(context1) typedAnnotation ann) + } } if (ainfos.nonEmpty) { annotated setAnnotations ainfos diff --git a/test/files/neg/t6558.check b/test/files/neg/t6558.check new file mode 100644 index 0000000000..bd118edec8 --- /dev/null +++ b/test/files/neg/t6558.check @@ -0,0 +1,4 @@ +t6558.scala:5: error: not found: type sth + @sth + ^ +one error found diff --git a/test/files/neg/t6558.scala b/test/files/neg/t6558.scala new file mode 100644 index 0000000000..92c788f21e --- /dev/null +++ b/test/files/neg/t6558.scala @@ -0,0 +1,9 @@ +class AnnotNotFound { + def foo(a: Any) = () + + foo { + @sth + def foo = 0 + foo + } +} |