Javac compiler error discovered via project Kulla REPL?

Robert Field robert.field at oracle.com
Fri Apr 17 00:35:53 UTC 2015


Right.

And, yes, the REPL's will too.

-Robert



On April 16, 2015 1:43:34 PM Alex Buckley <alex.buckley at oracle.com> wrote:

> OK, so in the method invocation expression (whether standalone or on the
> RHS of an assignment), javac should classify the identifier "Undefined"
> as a PackageName -- see JLS 6.5.2. Since no package with that name
> exists, an error is due - see JLS 6.5.3.1. It would be helpful for the
> "cannot find symbol" message to indicate that neither a variable nor a
> type nor a package called "Undefined" is in scope.
>
> I expect that when javac's second error message improves, so will the
> REPL's third error message.
>
> Alex
>
> On 4/16/2015 12:57 PM, Robert Field wrote:
> > Actually, none of the below.
> >
> > They both give the same errors: both a variable ClassName and a class
> > ClassName error.  Which makes it even more potentially confusing.
> >
> >  From Jan's bug report (showing the behavior of javac (no REPL)) (I've
> > added bolding) --
> >
> >     Consider this code:
> >     ---
> >     public class Test {
> >           private void test() {
> >               Undefined x = Undefined.create();
> >           }
> >     }
> >     ---
> >
> >     When compiled, this code produces the following errors:
> >     ---
> >     Test.java:3: error: cannot find symbol
> >               Undefined x = Undefined.create();
> >               ^
> >        symbol: *class Undefined*
> >        location: class Test
> >     Test.java:3: error: cannot find symbol
> >               Undefined x = Undefined.create();
> >                             ^
> >        symbol: *variable Undefined*
> >        location: class Test
> >     2 errors
> >     ---
> >
> > The REPL does --
> >
> >     -> Undefined x = Undefined.create()
> >     |  Error:
> >     |  cannot find symbol
> >     |    symbol:   class Undefined
> >     |  Undefined x = Undefined.create();
> >     |  ^-------^
> >     |  Error:
> >     |  cannot find symbol
> >     |    symbol:   class Undefined
> >     |  Undefined x = Undefined.create();
> >     |  ^-------^
> >     |  Error:
> >     |  cannot find symbol
> >     |    symbol:   variable Undefined
> >     |  Undefined x = Undefined.create();
> >     |                ^-------^
> >
> >
> >     ->
> >
> > The only differences are how the position is marked and the REPL gives
> > the first one twice (because it has been taken apart and put back
> > together with three occurrences of the name).
> >
> > Given just "Undefined.create()"  both javac and REPL give just a
> > "variable Undefined" error
> >
> > -Robert
> >
> >
> > On 04/16/15 11:40, Alex Buckley wrote:
> >> The situation seems to be that the REPL gives no error for the
> >> identifier "ClassName" on the LHS of the assignment. Therefore, it
> >> must have been possible to classify the identifier as a simple name,
> >> in particular as a TypeName. Then, the use of the TypeName on the RHS
> >> of the assignment cannot be an error.
> >>
> >> I can imagine an alternative situation: the identifier "ClassName" is
> >> totally made up, and the REPL just happens to be reporting only one of
> >> the two "cannot find symbol" errors indicated by JDK-8077970.
> >>
> >> Which situation is it?
> >>
> >> Alex
> >>
> >> On 4/16/2015 8:07 AM, Jan Lahoda wrote:
> >>> Hello Martijn,
> >>>
> >>> I've filled:
> >>> https://bugs.openjdk.java.net/browse/JDK-8077970
> >>>
> >>> Thanks,
> >>>      Jan
> >>>
> >>> On 16.4.2015 13:35, Martijn Verburg wrote:
> >>>> Hi all,
> >>>>
> >>>>  From the REPL hackday we had recently:
> >>>>
> >>>> "Following error message might be confusing, as the symbol might not
> >>>> be a
> >>>> variable:
> >>>> -> ClassName x = ClassName.create()
> >>>> |  cannot find symbol
> >>>> | symbol:   variable ClassName
> >>>> |  ClassName x = ClassName.create();
> >>>> |                ^-------^
> >>>> "
> >>>>
> >>>> Kulla team suggested this is a Java compiler (javac) error message
> >>>> and it
> >>>> should be submitted as a bug report against javac.
> >>>>
> >>>> Cheers,
> >>>> Martijn
> >>>>
> >




More information about the compiler-dev mailing list