本文整理汇总了Java中org.eclipse.xtext.xbase.XSwitchExpression类的典型用法代码示例。如果您正苦于以下问题:Java XSwitchExpression类的具体用法?Java XSwitchExpression怎么用?Java XSwitchExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
XSwitchExpression类属于org.eclipse.xtext.xbase包,在下文中一共展示了XSwitchExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: checkTypeGuardsOrder
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkTypeGuardsOrder(XSwitchExpression expression) {
if (isIgnored(IssueCodes.UNREACHABLE_CASE)) {
return;
}
ITypeReferenceOwner owner = new StandardTypeReferenceOwner(getServices(), expression);
List<LightweightTypeReference> previousTypeReferences = new ArrayList<LightweightTypeReference>();
for (XCasePart casePart : expression.getCases()) {
JvmTypeReference typeGuard = casePart.getTypeGuard();
if (typeGuard == null) {
continue;
}
LightweightTypeReference actualType = owner.toLightweightTypeReference(typeGuard);
if (actualType == null) {
continue;
}
if (isHandled(actualType, previousTypeReferences)) {
addIssue("Unreachable code: The case can never match. It is already handled by a previous condition.", typeGuard, IssueCodes.UNREACHABLE_CASE);
continue;
}
if (casePart.getCase() == null) {
previousTypeReferences.add(actualType);
}
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:26,代码来源:XbaseValidator.java
示例2: checkTypeGuardsOrderWithGenerics
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkTypeGuardsOrderWithGenerics(XSwitchExpression expression) {
if (isIgnored(IssueCodes.UNREACHABLE_CASE)) {
return;
}
ITypeReferenceOwner owner = new StandardTypeReferenceOwner(getServices(), expression);
List<LightweightTypeReference> previousTypeReferences = new ArrayList<LightweightTypeReference>();
for (XCasePart casePart : expression.getCases()) {
JvmTypeReference typeGuard = casePart.getTypeGuard();
if (typeGuard == null) {
continue;
}
LightweightTypeReference typeReference = owner.toLightweightTypeReference(typeGuard);
LightweightTypeReference actualType = typeReference.getRawTypeReference();
if (actualType == null || typeReference == actualType) {
continue;
}
if (isHandled(actualType, previousTypeReferences)) {
addIssue("Unreachable code: The case can never match. It is already handled by a previous condition (with the same type erasure).", typeGuard, IssueCodes.UNREACHABLE_CASE);
continue;
}
if (casePart.getCase() == null) {
previousTypeReferences.add(actualType);
}
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:27,代码来源:XbaseValidator.java
示例3: createFeatureCallSerializationScope
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
public IScope createFeatureCallSerializationScope(EObject context) {
if (!(context instanceof XAbstractFeatureCall)) {
return IScope.NULLSCOPE;
}
XAbstractFeatureCall call = (XAbstractFeatureCall) context;
JvmIdentifiableElement feature = call.getFeature();
// this and super - logical container aware FeatureScopes
if (feature instanceof JvmType) {
return getTypeScope(call, (JvmType) feature);
}
if (feature instanceof JvmConstructor) {
return getThisOrSuperScope(call, (JvmConstructor) feature);
}
if (feature instanceof JvmExecutable) {
return getExecutableScope(call, feature);
}
if (feature instanceof JvmFormalParameter || feature instanceof JvmField || feature instanceof XVariableDeclaration || feature instanceof XSwitchExpression) {
return new SingletonScope(EObjectDescription.create(feature.getSimpleName(), feature), IScope.NULLSCOPE);
}
return IScope.NULLSCOPE;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:22,代码来源:SerializerScopeProvider.java
示例4: declareLocalVariable
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected String declareLocalVariable(XSwitchExpression expr, ITreeAppendable b) {
// declare local var for the switch expression
String variableName = getSwitchLocalVariableName(expr, b);
if (variableName != null) {
return variableName;
}
String name = createSwitchLocalVariableName(expr);
JvmTypeReference variableType = getSwitchLocalVariableType(expr);
b.newLine().append("final ");
serialize(variableType, expr, b);
b.append(" ");
variableName = declareAndAppendSwitchSyntheticLocalVariable(expr, name, b);
b.append(" = ");
internalToJavaExpression(expr.getSwitch(), b);
b.append(";");
return variableName;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:18,代码来源:XbaseCompiler.java
示例5: getSwitchLocalVariableName
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected String getSwitchLocalVariableName(XSwitchExpression expr, ITreeAppendable b) {
JvmFormalParameter declaredParam = expr.getDeclaredParam();
if (declaredParam != null) {
if (b.hasName(declaredParam)) {
return b.getName(declaredParam);
}
return null;
}
XExpression switchExpression = expr.getSwitch();
if (b.hasName(switchExpression)) {
return b.getName(switchExpression);
}
if (switchExpression instanceof XFeatureCall) {
XFeatureCall featureCall = (XFeatureCall) switchExpression;
JvmIdentifiableElement feature = featureCall.getFeature();
if (b.hasName(feature)) {
return b.getName(feature);
}
}
return null;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:22,代码来源:XbaseCompiler.java
示例6: isCompiledToJava7Switch
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
/**
* Determine whether the given switch expression should be compiled to a Java switch for Java version 7 or higher.
*/
protected boolean isCompiledToJava7Switch(XSwitchExpression expr) {
// NOTE: This method could be merged with #isCompiledToJavaSwitch(XSwitchExpression)
if (!switchExpressions.isJava7SwitchExpression(expr)) {
return false;
}
for (XCasePart casePart : expr.getCases()) {
if (!switchExpressions.isJavaCaseExpression(expr, casePart)) {
return false;
}
if (!switchExpressions.isConstant(casePart)) {
return false;
}
}
return true;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:19,代码来源:XbaseCompiler.java
示例7: getLocationOfDefault
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected ILocationData getLocationOfDefault(XSwitchExpression expression) {
final ICompositeNode startNode = NodeModelUtils.getNode(expression);
if (startNode != null) {
List<INode> resultNodes = Lists.newArrayList();
boolean defaultSeen = false;
for (INode child : startNode.getChildren()) {
if (defaultSeen) {
resultNodes.add(child);
if (GrammarUtil.containingAssignment(child.getGrammarElement()) != null) {
break;
}
} else if (child.getGrammarElement() instanceof Keyword && "default".equals(child.getText())) {
defaultSeen = true;
resultNodes.add(child);
}
}
return toLocationData(resultNodes);
}
return null;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:21,代码来源:XbaseCompiler.java
示例8: isJavaSwitchExpression
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
/**
* Determine whether the given switch expression is valid for Java version 6 or lower.
*/
public boolean isJavaSwitchExpression(final XSwitchExpression it) {
boolean _xblockexpression = false;
{
final LightweightTypeReference switchType = this.getSwitchVariableType(it);
if ((switchType == null)) {
return false;
}
boolean _isSubtypeOf = switchType.isSubtypeOf(Integer.TYPE);
if (_isSubtypeOf) {
return true;
}
boolean _isSubtypeOf_1 = switchType.isSubtypeOf(Enum.class);
if (_isSubtypeOf_1) {
return true;
}
_xblockexpression = false;
}
return _xblockexpression;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:23,代码来源:XSwitchExpressions.java
示例9: isJava7SwitchExpression
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
/**
* Determine whether the given switch expression is valid for Java version 7 or higher.
*/
public boolean isJava7SwitchExpression(final XSwitchExpression it) {
boolean _xblockexpression = false;
{
final LightweightTypeReference switchType = this.getSwitchVariableType(it);
if ((switchType == null)) {
return false;
}
boolean _isSubtypeOf = switchType.isSubtypeOf(Integer.TYPE);
if (_isSubtypeOf) {
return true;
}
boolean _isSubtypeOf_1 = switchType.isSubtypeOf(Enum.class);
if (_isSubtypeOf_1) {
return true;
}
boolean _isSubtypeOf_2 = switchType.isSubtypeOf(String.class);
if (_isSubtypeOf_2) {
return true;
}
_xblockexpression = false;
}
return _xblockexpression;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:27,代码来源:XSwitchExpressions.java
示例10: getSwitchVariableType
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
public LightweightTypeReference getSwitchVariableType(final XSwitchExpression it) {
@Extension
final IResolvedTypes resolvedTypes = this._iBatchTypeResolver.resolveTypes(it);
final JvmFormalParameter declaredParam = it.getDeclaredParam();
if ((declaredParam == null)) {
return resolvedTypes.getActualType(it.getSwitch());
}
final LightweightTypeReference paramType = resolvedTypes.getActualType(declaredParam);
LightweightTypeReference _elvis = null;
if (paramType != null) {
_elvis = paramType;
} else {
LightweightTypeReference _actualType = resolvedTypes.getActualType(it.getSwitch());
_elvis = _actualType;
}
return _elvis;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:18,代码来源:XSwitchExpressions.java
示例11: getThen
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
public XExpression getThen(final XCasePart casePart, final XSwitchExpression switchExpression) {
final XExpression then = casePart.getThen();
if ((then != null)) {
return then;
}
final int casePartIndex = switchExpression.getCases().indexOf(casePart);
if ((casePartIndex == (-1))) {
return null;
}
final int count = switchExpression.getCases().size();
if ((casePartIndex == (count - 1))) {
return switchExpression.getDefault();
}
if (((casePartIndex + 1) < count)) {
return this.getThen(switchExpression.getCases().get((casePartIndex + 1)), switchExpression);
}
return null;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:19,代码来源:XSwitchExpressions.java
示例12: checkTypeGuards
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkTypeGuards(XCasePart casePart) {
if (casePart.getTypeGuard() == null)
return;
LightweightTypeReference typeGuard = toLightweightTypeReference(casePart.getTypeGuard());
if (typeGuard.isPrimitive()) {
error("Primitives are not allowed as type guards", Literals.XCASE_PART__TYPE_GUARD, INVALID_USE_OF_TYPE);
return;
}
LightweightTypeReference targetTypeRef = getActualType(((XSwitchExpression) casePart.eContainer()).getSwitch());
checkCast(casePart.getTypeGuard(), typeGuard, targetTypeRef);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:13,代码来源:XbaseValidator.java
示例13: checkLocalUsageOfSwitchParameter
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkLocalUsageOfSwitchParameter(XSwitchExpression switchExpression) {
JvmFormalParameter switchParam = switchExpression.getDeclaredParam();
if(!isIgnored(UNUSED_LOCAL_VARIABLE) && switchParam != null && !isLocallyUsed(switchParam, switchExpression)){
String message = "The value of the local variable " + switchParam.getName() + " is not used";
addIssue(message, switchParam, TypesPackage.Literals.JVM_FORMAL_PARAMETER__NAME, UNUSED_LOCAL_VARIABLE);
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:9,代码来源:XbaseValidator.java
示例14: checkRedundantCase
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkRedundantCase(XSwitchExpression switchExpression) {
XCasePart casePart = IterableExtensions.last(switchExpression.getCases());
if (casePart == null || !(casePart.isFallThrough() && casePart.getThen() == null)) {
return;
}
if (switchExpression.getDefault() == null) {
error("Redundant case.", casePart, null, IssueCodes.REDUNDANT_CASE);
} else {
warning("Redundant case.", casePart, null, IssueCodes.REDUNDANT_CASE);
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:13,代码来源:XbaseValidator.java
示例15: checkDeadCode
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Check
public void checkDeadCode(XSwitchExpression switchExpression) {
List<XCasePart> cases = switchExpression.getCases();
for(int i = 0, size = cases.size(); i < size; i++) {
XCasePart casePart = cases.get(i);
XExpression caseExpression = casePart.getCase();
if (!earlyExitComputer.isEarlyExit(caseExpression)) {
validateCondition(caseExpression, false);
} else if (!markAsDeadCode(casePart.getThen())) {
if (casePart.getTypeGuard() == null) {
i = markAsDeadCode(cases, casePart, i, size);
}
}
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:16,代码来源:EarlyExitValidator.java
示例16: getSwitchExpressionState
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected ITypeComputationState getSwitchExpressionState(XSwitchExpression expr, ITypeComputationState state) {
JvmFormalParameter param = expr.getDeclaredParam();
if (param == null) {
return state.withNonVoidExpectation();
}
JvmTypeReference parameterType = param.getParameterType();
if (parameterType == null) {
return state.withNonVoidExpectation();
}
LightweightTypeReference expectation = state.getReferenceOwner().toLightweightTypeReference(parameterType);
return state.withExpectation(expectation);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:13,代码来源:XbaseTypeComputer.java
示例17: internalToConvertedExpression
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
@Override
protected void internalToConvertedExpression(XExpression obj, ITreeAppendable appendable) {
if (obj instanceof XBlockExpression) {
_toJavaExpression((XBlockExpression) obj, appendable);
} else if (obj instanceof XCastedExpression) {
_toJavaExpression((XCastedExpression) obj, appendable);
} else if (obj instanceof XClosure) {
_toJavaExpression((XClosure) obj, appendable);
} else if (obj instanceof XAnnotation) {
_toJavaExpression((XAnnotation) obj, appendable);
} else if (obj instanceof XConstructorCall) {
_toJavaExpression((XConstructorCall) obj, appendable);
} else if (obj instanceof XIfExpression) {
_toJavaExpression((XIfExpression) obj, appendable);
} else if (obj instanceof XInstanceOfExpression) {
_toJavaExpression((XInstanceOfExpression) obj, appendable);
} else if (obj instanceof XSwitchExpression) {
_toJavaExpression((XSwitchExpression) obj, appendable);
} else if (obj instanceof XTryCatchFinallyExpression) {
_toJavaExpression((XTryCatchFinallyExpression) obj, appendable);
} else if (obj instanceof XListLiteral) {
_toJavaExpression((XListLiteral) obj, appendable);
} else if (obj instanceof XSetLiteral) {
_toJavaExpression((XSetLiteral) obj, appendable);
} else if (obj instanceof XSynchronizedExpression) {
_toJavaExpression((XSynchronizedExpression) obj, appendable);
} else if (obj instanceof XReturnExpression) {
_toJavaExpression((XReturnExpression) obj, appendable);
} else if (obj instanceof XThrowExpression) {
_toJavaExpression((XThrowExpression) obj, appendable);
} else {
super.internalToConvertedExpression(obj, appendable);
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:35,代码来源:XbaseCompiler.java
示例18: _toJavaStatement
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected void _toJavaStatement(XSwitchExpression expr, ITreeAppendable b, boolean isReferenced) {
GeneratorConfig config = b.getGeneratorConfig();
boolean compileToSwitch;
if (config != null && config.getJavaSourceVersion().isAtLeast(JAVA7)) {
compileToSwitch = isCompiledToJava7Switch(expr);
} else {
compileToSwitch = isCompiledToJavaSwitch(expr);
}
if (compileToSwitch) {
_toJavaSwitchStatement(expr, b, isReferenced);
} else {
_toJavaIfElseStatement(expr, b, isReferenced);
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:15,代码来源:XbaseCompiler.java
示例19: createSwitchLocalVariableName
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected String createSwitchLocalVariableName(XSwitchExpression expr) {
String name = getSwitchLocalVariableSimpleName(expr);
if (name != null) {
return makeJavaIdentifier(name);
}
// define synthetic name
return "_switchValue";
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:9,代码来源:XbaseCompiler.java
示例20: getSwitchLocalVariableSimpleName
import org.eclipse.xtext.xbase.XSwitchExpression; //导入依赖的package包/类
protected String getSwitchLocalVariableSimpleName(XSwitchExpression expr) {
IdentifiableSimpleNameProvider nameProvider = getNameProvider();
String varName = nameProvider.getSimpleName(expr.getDeclaredParam());
if (varName != null) {
return varName;
}
XExpression expression = expr.getSwitch();
if (!(expression instanceof XFeatureCall)) {
return null;
}
XFeatureCall featureCall = (XFeatureCall) expression;
JvmIdentifiableElement feature = featureCall.getFeature();
return nameProvider.getSimpleName(feature);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:15,代码来源:XbaseCompiler.java
注:本文中的org.eclipse.xtext.xbase.XSwitchExpression类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论