Patch #3403265 from Dinesh Bolkensteyn
This commit is contained in:
parent
e62b456579
commit
5eaba6cbaf
|
|
@ -2004,6 +2004,87 @@ public final class TokenTypes
|
|||
* @see #LITERAL_FINALLY
|
||||
**/
|
||||
public static final int LITERAL_TRY = GeneratedJavaTokenTypes.LITERAL_try;
|
||||
|
||||
/**
|
||||
* Java 7 try-with-resources construct.
|
||||
*
|
||||
* <p>For example:</p>
|
||||
* <pre>
|
||||
* try (Foo foo = new Foo(); Bar bar = new Bar()) { }
|
||||
* </pre>
|
||||
* <p>parses as:</p>
|
||||
* <pre>
|
||||
* +--LITERAL_TRY (try)
|
||||
* |
|
||||
* +--RESOURCE_SPECIFICATION
|
||||
* |
|
||||
* +--LPAREN (()
|
||||
* +--RESOURCES
|
||||
* |
|
||||
* +--RESOURCE
|
||||
* |
|
||||
* +--MODIFIERS
|
||||
* +--TYPE
|
||||
* |
|
||||
* +--IDENT (Foo)
|
||||
* +--IDENT (foo)
|
||||
* +--ASSIGN (=)
|
||||
* +--EXPR
|
||||
* |
|
||||
* +--LITERAL_NEW (new)
|
||||
* |
|
||||
* +--IDENT (Foo)
|
||||
* +--LPAREN (()
|
||||
* +--ELIST
|
||||
* +--RPAREN ())
|
||||
* +--SEMI (;)
|
||||
* +--RESOURCE
|
||||
* |
|
||||
* +--MODIFIERS
|
||||
* +--TYPE
|
||||
* |
|
||||
* +--IDENT (Bar)
|
||||
* +--IDENT (bar)
|
||||
* +--ASSIGN (=)
|
||||
* +--EXPR
|
||||
* |
|
||||
* +--LITERAL_NEW (new)
|
||||
* |
|
||||
* +--IDENT (Bar)
|
||||
* +--LPAREN (()
|
||||
* +--ELIST
|
||||
* +--RPAREN ())
|
||||
* +--RPAREN ())
|
||||
* +--SLIST ({)
|
||||
* +--RCURLY (})
|
||||
* </pre>
|
||||
*
|
||||
* @see #LPAREN
|
||||
* @see #RESOURCES
|
||||
* @see #RESOURCE
|
||||
* @see #SEMI
|
||||
* @see #RPAREN
|
||||
* @see #LITERAL_TRY
|
||||
**/
|
||||
public static final int RESOURCE_SPECIFICATION =
|
||||
GeneratedJavaTokenTypes.RESOURCE_SPECIFICATION;
|
||||
|
||||
/**
|
||||
* Java 7 try-with-resources construct.
|
||||
*
|
||||
* @see #RESOURCE_SPECIFICATION
|
||||
**/
|
||||
public static final int RESOURCES =
|
||||
GeneratedJavaTokenTypes.RESOURCES;
|
||||
|
||||
/**
|
||||
* Java 7 try-with-resources construct.
|
||||
*
|
||||
* @see #RESOURCE_SPECIFICATION
|
||||
**/
|
||||
public static final int RESOURCE =
|
||||
GeneratedJavaTokenTypes.RESOURCE;
|
||||
|
||||
/**
|
||||
* The <code>catch</code> keyword.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -92,6 +92,9 @@ tokens {
|
|||
// we need to put it to the end to maintain binary compatibility
|
||||
// with previous versions
|
||||
DO_WHILE;
|
||||
|
||||
//Tokens for Java 1.7 language enhancements
|
||||
RESOURCE_SPECIFICATION; RESOURCES; RESOURCE;
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -1126,15 +1129,26 @@ tryBlock
|
|||
: "try"^
|
||||
|
||||
// try-with-resources
|
||||
(tryWithResources)?
|
||||
(resourceSpecification)?
|
||||
|
||||
compoundStatement
|
||||
(handler)*
|
||||
( finallyHandler )?
|
||||
;
|
||||
|
||||
tryWithResources
|
||||
: LPAREN^ modifiers typeSpec[true] IDENT ASSIGN expression RPAREN
|
||||
resourceSpecification
|
||||
: LPAREN resources (SEMI)? RPAREN
|
||||
{#resourceSpecification = #([RESOURCE_SPECIFICATION, "RESOURCE_SPECIFICATION"], #resourceSpecification);}
|
||||
;
|
||||
|
||||
resources
|
||||
: resource (SEMI resource)*
|
||||
{#resources = #([RESOURCES, "RESOURCES"], #resources);}
|
||||
;
|
||||
|
||||
resource
|
||||
: modifiers typeSpec[true] IDENT ASSIGN expression
|
||||
{#resource = #([RESOURCE, "RESOURCE"], #resource);}
|
||||
;
|
||||
|
||||
// an exception handler
|
||||
|
|
|
|||
|
|
@ -16,10 +16,20 @@ public class InputJava7TryWithResources
|
|||
try (MyResource resource = new MyResource()) { }
|
||||
finally { }
|
||||
|
||||
try (MyResource resource = new MyResource()) { }
|
||||
try (MyResource resource = new MyResource();) { }
|
||||
catch (Exception e) { }
|
||||
|
||||
try (MyResource resource = new MyResource()) { }
|
||||
try (MyResource resource = new MyResource();) { }
|
||||
catch (Exception e) { }
|
||||
catch (Throwable t) { }
|
||||
finally { }
|
||||
|
||||
try (MyResource resource = new MyResource(); MyResource resource2 = new MyResource()) { }
|
||||
catch (Exception e) { }
|
||||
catch (Throwable t) { }
|
||||
finally { }
|
||||
|
||||
try (MyResource resource = new MyResource(); MyResource resource2 = new MyResource();) { }
|
||||
catch (Exception e) { }
|
||||
catch (Throwable t) { }
|
||||
finally { }
|
||||
|
|
|
|||
Loading…
Reference in New Issue