blob: 1f80c9f66a6e97b883dde805f8cd1de518a92562 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Stephan Herrmann - Contribution for
* Bug 427438 - [1.8][compiler] NPE at org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConditionalExpression.generateCode(ConditionalExpression.java:280)
*******************************************************************************/
package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
public enum ExpressionContext {
/** Assignment context: potential poly-expressions are: method invocations, lambdas, reference expressions,
conditional expressions and allocation expressions. This is the only Java 7 context where target type
influenced evaluation of some expression.
Context induced by: ReturnStatement, ArrayInitializer, Assignment, FieldDeclaration and LocalDeclaration.
*/
ASSIGNMENT_CONTEXT {
@Override
public String toString() {
return "assignment context"; //$NON-NLS-1$
}
@Override
public boolean definesTargetType() {
return true;
}
},
/** Invocation context: potential poly-expressions are: method invocations, lambdas, reference expressions,
conditional expressions and allocation expressions. At this point, we don't distinguish between strict
and loose invocation contexts - we may have to cross the bridge some day.
Context induced by: AllocationExpression, QualifiedAllocationExpression, ExplicitConstructorCall, MessageSend
CodeSnippetAllocationExpression and CodeSnippetMessageSend.
*/
INVOCATION_CONTEXT {
@Override
public String toString() {
return "invocation context"; //$NON-NLS-1$
}
@Override
public boolean definesTargetType() {
return true;
}
},
/** Casting context: potential poly-expressions are: lambdas and reference expressions
Context induced by: CastExpression.
*/
CASTING_CONTEXT {
@Override
public String toString() {
return "casting context"; //$NON-NLS-1$
}
@Override
public boolean definesTargetType() {
return false;
}
},
/** Vanilla context (string, numeric): potential poly-expressions are: NONE. This is the nonpoly context in which
expressions get evaluated, unless they feature in one of the above contexts.
*/
VANILLA_CONTEXT {
@Override
public String toString() {
return "vanilla context"; //$NON-NLS-1$
}
@Override
public boolean definesTargetType() {
return false;
}
};
public abstract boolean definesTargetType();
}