target_info structure of a method receiver
    Joel Borggren-Franck 
    joel.franck at oracle.com
       
    Fri Sep 12 14:58:23 UTC 2014
    
    
  
Hi,
The table 4.7.20-A and section 4.7.20.1 in JVMS says that a method
receiver target kind is followed by the empty_target target info, noting
that "Only one type appears in each of these locations, so there is no
per-type information to represent in the target_info union.", yet the
following program compiles with both 8 and 9 javac:
--- 8< ---
import java.lang.annotation.*;
import java.lang.reflect.*;
public class Receiver<T, U> {
   @Target(ElementType.TYPE_USE)
   @Retention(RetentionPolicy.RUNTIME)
   @interface A {
   }
   class Foo {
      Foo(@A Receiver<@A T, @A U> Receiver.this) {
      }
   }
   public void m(@A Receiver<@A T, @A U> this, int j) { ; }
}
--- 8< ---
Isn't this 3 type uses in both the ctor and the method?
I haven't found anything in JLS to indicate if javac or JVMLS is wrong
here.
cheers
/Joel
    
    
More information about the compiler-dev
mailing list