]> source.dussan.org Git - aspectj.git/commitdiff
Fix for bugzilla bug 71087:
authorehilsdal <ehilsdal>
Mon, 23 Aug 2004 23:42:09 +0000 (23:42 +0000)
committerehilsdal <ehilsdal>
Mon, 23 Aug 2004 23:42:09 +0000 (23:42 +0000)
  underspecification of primitive conversion

docs/progGuideDB/semantics.xml

index 3c1c8fe3280a3a9d88c942cb6f571e25b054ed47..cef27728b655a09f7e93371de00c98519dbef34c 100644 (file)
 </programlisting>
 
       <para>
-        picks out join points where an <literal>int</literal> is being
-        passed as an argument.  Second, though, it makes the value of that
-        argument available to the enclosing advice or pointcut.
+        picks out join points where an <literal>int</literal> (or
+        a <literal>byte</literal>, <literal>short</literal>, or
+        <literal>char</literal>; anything assignable to an
+        <literal>int</literal>) is being passed as an argument.
+        Second, though, it makes the value of that argument
+        available to the enclosing advice or pointcut.  
       </para>
 
       <para>
         advice will be of type <literal>java.lang.Integer</literal>.
       </para>
 
+      <para>
+        The "boxing" of the primitive value is based on the
+        <emphasis>original</emphasis> primitive type.  So in the
+        following program
+      </para>
+
+<programlisting>
+  public class InstanceOf {
+
+    public static void main(String[] args) {
+      doInt(5);
+    }
+
+    static void doInt(int i) {  }
+  }
+
+  aspect IntToLong {
+    pointcut el(long l) : 
+        execution(* doInt(..)) <![CDATA[&&]]> args(l);
+
+    before(Object o) : el(o) {
+         System.out.println(o.getClass());
+    }
+  }
+</programlisting>
+
+      <para>
+        The pointcut will match and expose the integer argument,
+        but it will expose it as an <literal>Integer</literal>,
+        not a <literal>Long</literal>.
+      </para>
+
     </sect2>
 
     <sect2>