Latest build c572fa185d05 limitations

Howard Lovatt howard.lovatt at gmail.com
Fri Sep 10 22:18:32 PDT 2010


Hi,

Using my usual source:

    143: final IntList11 il = new IntList11();
    144: out.println( il );
    145: il.forEach( #( int i ) { 2 * i } ); // No exception; no try
block - needs type parameter
    146: out.println( il );

Gives:

Exception in thread "main" java.lang.VerifyError: Bad local variable
type in method lambdas.Main$9.call(Ljava/lang/Integer;)Ljava/lang/Integer;
at offset 1
	at lambdas.Main.exceptionTransparency(Main.java:145)
	at lambdas.Main.main(Main.java:24)

But:

    try {
      il.forEach( #( int i ) {
        if ( i < 4 ) { throw new Exception(); }
        return i * i;
      } ); // Need to catch the checked exception!
    } catch ( final Throwable notUsed ) {
      out.println( "Exception caught 1" );
    }
    out.println( il );

Works!

And:

  il.forEach( #( i ) { 2 * i } );

Requires a try catch block (as before) and:

  il.forEach( #( Integer i ) { 2 * i } );

Works.

Great to see such regular updates into the repository,

  -- Howard.


More information about the lambda-dev mailing list