当前位置: 首页>>代码示例>>Java>>正文


Java XSwitchExpression类代码示例

本文整理汇总了Java中org.eclipse.xtext.xbase.XSwitchExpression的典型用法代码示例。如果您正苦于以下问题:Java XSwitchExpression类的具体用法?Java XSwitchExpression怎么用?Java XSwitchExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


XSwitchExpression类属于org.eclipse.xtext.xbase包,在下文中一共展示了XSwitchExpression类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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


注:本文中的org.eclipse.xtext.xbase.XSwitchExpression类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。