Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/verify/VerifyTruffleProcessor.java @ 21420:fb17e716b03c
The annotation processor should verify proper use of @Child annotation during compilation time and prevent usage of final.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Tue, 19 May 2015 12:30:51 +0200 |
parents | 8fd7354353b7 |
children | c2b006c5e15f |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/verify/VerifyTruffleProcessor.java Tue May 19 11:54:32 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/verify/VerifyTruffleProcessor.java Tue May 19 12:30:51 2015 +0200 @@ -34,9 +34,9 @@ import javax.tools.Diagnostic.Kind; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; +import com.oracle.truffle.api.nodes.Node.Child; -@SupportedSourceVersion(SourceVersion.RELEASE_7) -@SupportedAnnotationTypes({"com.oracle.truffle.api.CompilerDirectives.TruffleBoundary"}) +@SupportedAnnotationTypes({"com.oracle.truffle.api.CompilerDirectives.TruffleBoundary", "com.oracle.truffle.api.nodes.Node.Child"}) public class VerifyTruffleProcessor extends AbstractProcessor { @Override public SourceVersion getSupportedSourceVersion() { @@ -113,6 +113,12 @@ scope = null; } } + + for (Element e : roundEnv.getElementsAnnotatedWith(Child.class)) { + if (e.getModifiers().contains(Modifier.FINAL)) { + errorMessage(e, "@Child field cannot be final"); + } + } return false; }