Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6326754

Compiler will fail to handle -Xmaxerrs with -ve numbers

    XMLWordPrintable

Details

    • b81
    • generic, x86
    • generic, windows_xp
    • Verified

    Description

      Compiler will fail to handel -Xmaxerrs will -ve numbers.
      Though there are less chances that users to give -ve number for setting an error but compiler should give different output, say like -Xmaxwarns.

      When I tried like:
      <output>
      bash-3.00$ javac -Xmaxerrs -4 Test16.java
      An exception has occurred in the compiler (1.6.0-ea). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.NullPointerException
              at com.sun.tools.javac.comp.TransTypes.retype(TransTypes.java:136)
              at com.sun.tools.javac.comp.TransTypes.visitApply(TransTypes.java:514)
              at com.sun.tools.javac.tree.Tree$Apply.accept(Tree.java:992)
              at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:346)
              at com.sun.tools.javac.comp.TransTypes.visitExec(TransTypes.java:477)
              at com.sun.tools.javac.tree.Tree$Exec.accept(Tree.java:888)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:43)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:55)
              at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
              at com.sun.tools.javac.tree.Tree$Block.accept(Tree.java:630)
              at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:346)
              at com.sun.tools.javac.comp.TransTypes.visitMethodDef(TransTypes.java:381)
              at com.sun.tools.javac.tree.Tree$MethodDef.accept(Tree.java:545)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:43)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:55)
              at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:120)
              at com.sun.tools.javac.comp.TransTypes.translateClass(TransTypes.java:690)
              at com.sun.tools.javac.comp.TransTypes.visitClassDef(TransTypes.java:368)
              at com.sun.tools.javac.tree.Tree$ClassDef.accept(Tree.java:487)
              at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:346)
              at com.sun.tools.javac.comp.TransTypes.translateTopLevelClass(TransTypes.java:713)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:722)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:665)
              at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:549)
              at com.sun.tools.javac.main.Main.compile(Main.java:680)
              at com.sun.tools.javac.main.Main.compile(Main.java:611)
              at com.sun.tools.javac.main.Main.compile(Main.java:607)
              at com.sun.tools.javac.Main.compile(Main.java:70)
              at com.sun.tools.javac.Main.main(Main.java:55)
      bash-3.00$
      </output>

      I am not very sure whether code required or not but any way if required , please use the following code to reproduce.
      <code>
      class TestConstructor<T,K>{
          T t;
          K k;
          public TestConstructor(T t,K k){
              this.t =t;
          }
          public TestConstructor(K k){
              this.k = k;
              this.t = null;
          }
          public TestConstructor(T t){
              this.t=t;
              this.k=null;
          }
          public void setT(T t){
              this.t=t;
              this.k=null;
          }
          public void setT(K k){
              this.k = k;
              this.t = null;
          }
          public void setT(T t,K k){
              this.t = t;
              this.k = k;
          }
      }
      class TestC<T>{
          T t;
          public <T>void setT(T t){
              this.t = t;
          }
      }
      public class Test16{
          public static void main(String... arg){
              TestC tC =new TestC();
              tC.setT();
              TestConstructor tc = new TestConstructor("saaa");
              tc.setT("sasa");
              TestC<Integer> tC1 = new TestC();
              tC1.setT(545);
          }
      }
      </code>

      Attachments

        Issue Links

          Activity

            People

              jjg Jonathan Gibbons
              savadhansunw Seetharama Avadhanam (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: