As 5652acd48509 shows, it is dangerous to return long from @JavaScriptBody. Warn about such situation.
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 25 Feb 2013 19:26:02 +0100
changeset 75770ff060e1674
parent 754 39712168230d
child 758 caedc26b6dbf
As 5652acd48509 shows, it is dangerous to return long from @JavaScriptBody. Warn about such situation.
core/src/main/java/org/apidesign/bck2brwsr/core/impl/JavaScriptProcesor.java
     1.1 --- a/core/src/main/java/org/apidesign/bck2brwsr/core/impl/JavaScriptProcesor.java	Mon Feb 25 11:18:12 2013 +0100
     1.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/impl/JavaScriptProcesor.java	Mon Feb 25 19:26:02 2013 +0100
     1.3 @@ -24,6 +24,7 @@
     1.4  import javax.annotation.processing.AbstractProcessor;
     1.5  import javax.annotation.processing.Completion;
     1.6  import javax.annotation.processing.Completions;
     1.7 +import javax.annotation.processing.Messager;
     1.8  import javax.annotation.processing.Processor;
     1.9  import javax.annotation.processing.RoundEnvironment;
    1.10  import javax.lang.model.element.AnnotationMirror;
    1.11 @@ -32,6 +33,7 @@
    1.12  import javax.lang.model.element.ExecutableElement;
    1.13  import javax.lang.model.element.TypeElement;
    1.14  import javax.lang.model.element.VariableElement;
    1.15 +import javax.lang.model.type.TypeKind;
    1.16  import javax.tools.Diagnostic;
    1.17  import org.apidesign.bck2brwsr.core.JavaScriptBody;
    1.18  import org.openide.util.lookup.ServiceProvider;
    1.19 @@ -51,6 +53,7 @@
    1.20      
    1.21      @Override
    1.22      public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    1.23 +        final Messager msg = processingEnv.getMessager();
    1.24          for (Element e : roundEnv.getElementsAnnotatedWith(JavaScriptBody.class)) {
    1.25              if (e.getKind() != ElementKind.METHOD && e.getKind() != ElementKind.CONSTRUCTOR) {
    1.26                  continue;
    1.27 @@ -64,7 +67,10 @@
    1.28              }
    1.29              String[] arr = jsb.args();
    1.30              if (params.size() != arr.length) {
    1.31 -                processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Number of args arguments does not match real arguments!", e);
    1.32 +                msg.printMessage(Diagnostic.Kind.ERROR, "Number of args arguments does not match real arguments!", e);
    1.33 +            }
    1.34 +            if (ee.getReturnType().getKind() == TypeKind.LONG) {
    1.35 +                msg.printMessage(Diagnostic.Kind.WARNING, "Don't return long. Return double and convert it to long in Java code.", e);
    1.36              }
    1.37          }
    1.38          return true;