本文整理汇总了Java中org.eclipse.xtext.xbase.XCasePart类的典型用法代码示例。如果您正苦于以下问题:Java XCasePart类的具体用法?Java XCasePart怎么用?Java XCasePart使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
XCasePart类属于org.eclipse.xtext.xbase包,在下文中一共展示了XCasePart类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: checkTypeGuardsOrder
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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.XCasePart; //导入依赖的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: appendCloseIfStatement
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
protected ITreeAppendable appendCloseIfStatement(XCasePart casePart, ITreeAppendable caseAppendable, XSwitchExpressionCompilationState state) {
// close surrounding if statements
if (state.caseNeedsIfNotMatchedCheck()) {
if (casePart.getCase() != null) {
caseAppendable.decreaseIndentation().newLine().append("}");
}
if (casePart.getTypeGuard() != null) {
caseAppendable.decreaseIndentation().newLine().append("}");
caseAppendable.closeScope();
}
} else if (casePart.getCase() != null && casePart.getTypeGuard() != null) {
caseAppendable.decreaseIndentation().newLine().append("}");
caseAppendable.closeScope();
} else if (casePart.getTypeGuard() != null) {
caseAppendable.closeScope();
}
state.finishProcessingCase();
return caseAppendable;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:21,代码来源:XbaseCompiler.java
示例4: isCompiledToJava7Switch
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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
示例5: eSet
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue)
{
switch (featureID)
{
case XbasePackage.XSWITCH_EXPRESSION__SWITCH:
setSwitch((XExpression)newValue);
return;
case XbasePackage.XSWITCH_EXPRESSION__CASES:
getCases().clear();
getCases().addAll((Collection<? extends XCasePart>)newValue);
return;
case XbasePackage.XSWITCH_EXPRESSION__DEFAULT:
setDefault((XExpression)newValue);
return;
case XbasePackage.XSWITCH_EXPRESSION__DECLARED_PARAM:
setDeclaredParam((JvmFormalParameter)newValue);
return;
}
super.eSet(featureID, newValue);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:28,代码来源:XSwitchExpressionImpl.java
示例6: isConstant
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
public boolean isConstant(final XCasePart casePart) {
final XExpression case_ = casePart.getCase();
if ((case_ == null)) {
return false;
}
try {
this._switchConstantExpressionsInterpreter.evaluate(case_);
return true;
} catch (final Throwable _t) {
if (_t instanceof ConstantExpressionEvaluationException) {
return false;
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:17,代码来源:XSwitchExpressions.java
示例7: getThen
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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
示例8: checkTypeReferenceIsNotVoid
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
@Check
public void checkTypeReferenceIsNotVoid(XCasePart expression) {
if (expression.getTypeGuard() != null) {
if (toLightweightTypeReference(expression.getTypeGuard()).isPrimitiveVoid()) {
error("Primitive void cannot be used here.", expression.getTypeGuard(), null, INVALID_USE_OF_TYPE);
}
}
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:9,代码来源:XbaseValidator.java
示例9: checkTypeGuards
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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
示例10: checkRedundantCase
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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
示例11: checkDeadCode
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的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
示例12: markAsDeadCode
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
protected int markAsDeadCode(List<XCasePart> cases, XCasePart from, int idx, int size) {
if (!markAsDeadCode(from.getThen())) {
for(int j = idx + 1; j < size; j++) {
XCasePart next = cases.get(j);
if (markAsDeadCode(next.getTypeGuard()) || markAsDeadCode(next.getCase()) || markAsDeadCode(next.getThen())) {
idx = j;
j = size;
}
}
}
return idx;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:13,代码来源:EarlyExitValidator.java
示例13: isCompiledToJavaSwitch
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
/**
* Determine whether the given switch expression should be compiled to a Java switch for Java version 6 or lower.
*/
protected boolean isCompiledToJavaSwitch(XSwitchExpression expr) {
if (!switchExpressions.isJavaSwitchExpression(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,代码行数:18,代码来源:XbaseCompiler.java
示例14: allCasesAreExitedEarly
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
protected boolean allCasesAreExitedEarly(XSwitchExpression expr) {
for(XCasePart casePart: expr.getCases()) {
if(casePart.getThen() != null && !isEarlyExit(casePart.getThen())) {
return false;
}
}
return true;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:9,代码来源:XbaseCompiler.java
示例15: getCases
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EList<XCasePart> getCases()
{
if (cases == null)
{
cases = new EObjectContainmentEList<XCasePart>(XCasePart.class, this, XbasePackage.XSWITCH_EXPRESSION__CASES);
}
return cases;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:14,代码来源:XSwitchExpressionImpl.java
示例16: _findImplicitReturns
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
protected void _findImplicitReturns(final XSwitchExpression expression, final ImplicitReturnFinder.Acceptor acceptor) {
final Consumer<XCasePart> _function = (XCasePart it) -> {
this.findImplicitReturns(it.getThen(), acceptor);
};
expression.getCases().forEach(_function);
this.findImplicitReturns(expression.getDefault(), acceptor);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:8,代码来源:XbaseImplicitReturnFinder.java
示例17: isJavaCaseExpression
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
public boolean isJavaCaseExpression(final XSwitchExpression it, final XCasePart casePart) {
boolean _xblockexpression = false;
{
JvmTypeReference _typeGuard = casePart.getTypeGuard();
boolean _tripleNotEquals = (_typeGuard != null);
if (_tripleNotEquals) {
return false;
}
final XExpression case_ = casePart.getCase();
if ((case_ == null)) {
return false;
}
@Extension
final IResolvedTypes resolvedTypes = this._iBatchTypeResolver.resolveTypes(it);
final LightweightTypeReference caseType = resolvedTypes.getActualType(case_);
if ((caseType == null)) {
return false;
}
final LightweightTypeReference switchType = this.getSwitchVariableType(it);
boolean _isAssignableFrom = switchType.isAssignableFrom(caseType);
boolean _not = (!_isAssignableFrom);
if (_not) {
return false;
}
_xblockexpression = true;
}
return _xblockexpression;
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:29,代码来源:XSwitchExpressions.java
示例18: getCases
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
@Override
protected List<XCasePart> getCases(XSwitchExpression switchExpression) {
List<XCasePart> result = super.getCases(switchExpression);
for(XCasePart casePart: result) {
if (casePart.getThen() == null) {
return result;
}
}
return Lists.reverse(result);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:11,代码来源:XbaseShufflingInjectorProvider.java
示例19: testSwitch_0
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
@Test public void testSwitch_0() throws Exception {
XSwitchExpression se = (XSwitchExpression) expression("switch true { case 1==0 : '1' }");
assertNull(se.getDefault());
assertEquals(1, se.getCases().size());
assertNotNull(se.getSwitch());
XCasePart casePart = se.getCases().get(0);
assertTrue(casePart.getCase() instanceof XBinaryOperation);
assertTrue(casePart.getThen() instanceof XStringLiteral);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:10,代码来源:XbaseParserTest.java
示例20: testSwitch_1
import org.eclipse.xtext.xbase.XCasePart; //导入依赖的package包/类
@Test public void testSwitch_1() throws Exception {
XSwitchExpression se = (XSwitchExpression) expression("switch number{case 1:'1' case 2:'2' default:'3'}");
assertTrue(se.getDefault() instanceof XStringLiteral);
assertEquals(2, se.getCases().size());
assertTrue(se.getSwitch() instanceof XFeatureCall);
XCasePart case1 = se.getCases().get(0);
assertEquals("1", ((XNumberLiteral) case1.getCase()).getValue());
assertTrue(case1.getThen() instanceof XStringLiteral);
XCasePart case2 = se.getCases().get(1);
assertEquals("2", ((XNumberLiteral) case2.getCase()).getValue());
assertTrue(case2.getThen() instanceof XStringLiteral);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:15,代码来源:XbaseParserTest.java
注:本文中的org.eclipse.xtext.xbase.XCasePart类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论