本文整理汇总了Java中org.eclipse.xtext.common.types.JvmTypeParameter类的典型用法代码示例。如果您正苦于以下问题:Java JvmTypeParameter类的具体用法?Java JvmTypeParameter怎么用?Java JvmTypeParameter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JvmTypeParameter类属于org.eclipse.xtext.common.types包,在下文中一共展示了JvmTypeParameter类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: test_twoListParamsNoResult_03
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_twoListParamsNoResult_03() {
JvmOperation twoListParamsNoResult = getMethodFromParameterizedMethods(
"twoListParamsNoResult(java.util.List,java.util.List)");
JvmFormalParameter firstParam = twoListParamsNoResult.getParameters().get(0);
JvmTypeReference paramType = firstParam.getParameterType();
JvmParameterizedTypeReference parameterized = (JvmParameterizedTypeReference) paramType;
assertEquals(1, parameterized.getArguments().size());
JvmTypeReference typeParameter = parameterized.getArguments().get(0);
JvmType referencedType = typeParameter.getType();
assertFalse(referencedType.eIsProxy());
assertTrue(referencedType instanceof JvmTypeParameter);
JvmTypeParameter typeVar = (JvmTypeParameter) referencedType;
assertEquals("T", typeVar.getName());
assertSame(twoListParamsNoResult, typeVar.getDeclarator());
}
示例2: test_ParameterizedTypes_02
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_ParameterizedTypes_02() {
String typeName = ParameterizedTypes.class.getName();
JvmGenericType type = (JvmGenericType) getTypeProvider().findTypeByName(typeName);
JvmOperation methodS = getMethodFromType(type, ParameterizedTypes.class, "methodS(S)");
JvmTypeReference listS = methodS.getReturnType();
assertFalse(listS.toString(), listS.eIsProxy());
assertEquals("java.util.List<? extends S>", listS.getIdentifier());
JvmParameterizedTypeReference listType = (JvmParameterizedTypeReference) listS;
assertEquals(1, listType.getArguments().size());
JvmTypeReference typeArgument = listType.getArguments().get(0);
assertTrue(typeArgument instanceof JvmWildcardTypeReference);
JvmWildcardTypeReference wildcardTypeArgument = (JvmWildcardTypeReference) typeArgument;
assertEquals("? extends S", wildcardTypeArgument.getIdentifier());
assertEquals(1, wildcardTypeArgument.getConstraints().size());
JvmUpperBound upperBound = (JvmUpperBound) wildcardTypeArgument.getConstraints().get(0);
JvmTypeParameter s = type.getTypeParameters().get(0);
assertSame(s, upperBound.getTypeReference().getType());
}
示例3: test_ParameterizedTypes_03
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_ParameterizedTypes_03() {
String typeName = ParameterizedTypes.class.getName();
JvmGenericType type = (JvmGenericType) getTypeProvider().findTypeByName(typeName);
JvmOperation methodT = getMethodFromType(type, ParameterizedTypes.class, "methodT(T)");
JvmTypeReference listS = methodT.getReturnType();
assertFalse(listS.toString(), listS.eIsProxy());
assertEquals("java.util.List<? extends java.lang.Object & super T>", listS.getIdentifier());
JvmParameterizedTypeReference listType = (JvmParameterizedTypeReference) listS;
assertEquals(1, listType.getArguments().size());
JvmTypeReference typeArgument = listType.getArguments().get(0);
assertTrue(typeArgument instanceof JvmWildcardTypeReference);
JvmWildcardTypeReference wildcardTypeArgument = (JvmWildcardTypeReference) typeArgument;
assertEquals("? extends java.lang.Object & super T", wildcardTypeArgument.getIdentifier());
assertEquals(2, wildcardTypeArgument.getConstraints().size());
JvmUpperBound uperBound = (JvmUpperBound) wildcardTypeArgument.getConstraints().get(0);
assertEquals("java.lang.Object", uperBound.getTypeReference().getIdentifier());
JvmLowerBound lowerBound = (JvmLowerBound) wildcardTypeArgument.getConstraints().get(1);
JvmTypeParameter t = type.getTypeParameters().get(1);
assertSame(t, lowerBound.getTypeReference().getType());
}
示例4: test_ParameterizedTypes_04
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_ParameterizedTypes_04() {
String typeName = ParameterizedTypes.class.getName();
JvmGenericType type = (JvmGenericType) getTypeProvider().findTypeByName(typeName);
JvmOperation methodY = getMethodFromType(type, ParameterizedTypes.class, "methodY(Y)");
assertEquals(1, methodY.getParameters().size());
JvmType parameterType = methodY.getParameters().get(0).getParameterType().getType();
assertFalse(parameterType.eIsProxy());
assertEquals("Y", parameterType.getIdentifier());
assertTrue(parameterType instanceof JvmTypeParameter);
assertSame(methodY, ((JvmTypeParameter) parameterType).getDeclarator());
JvmTypeParameter y = (JvmTypeParameter) parameterType;
assertEquals(1, y.getConstraints().size());
JvmUpperBound upperBound = (JvmUpperBound) y.getConstraints().get(0);
JvmTypeParameter t = type.getTypeParameters().get(1);
assertSame(t, upperBound.getTypeReference().getType());
}
示例5: getDeclaredUpperBound
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Override
/* @Nullable */
protected LightweightTypeReference getDeclaredUpperBound(JvmTypeParameter typeParameter, ConstraintVisitingInfo visiting) {
if (!typeParameter.getConstraints().isEmpty() &&
((DeclaredConstraintVisitingInfo)visiting).tryVisitDeclaredUpperBoundsOf(typeParameter)) {
try {
JvmTypeConstraint constraint = typeParameter.getConstraints().get(0);
if (constraint instanceof JvmUpperBound) {
LightweightTypeReference reference = getOwner().toLightweightTypeReference(constraint.getTypeReference());
if (visiting.getCurrentDeclarator() != reference.getType()) {
return reference.accept(this, visiting);
}
WildcardTypeReference result = getOwner().newWildcardTypeReference();
result.addUpperBound(getObjectReference());
return result;
}
} finally {
((DeclaredConstraintVisitingInfo)visiting).didVisitDeclaredUpperBoundsOf(typeParameter);
}
}
return null;
}
示例6: test_ParameterizedTypes_Inner_Y_01
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_ParameterizedTypes_Inner_Y_01() {
String typeName = ParameterizedTypes.Inner.class.getName();
JvmGenericType type = (JvmGenericType) getTypeProvider().findTypeByName(typeName);
JvmTypeParameter typeParameterY = type.getTypeParameters().get(1);
assertEquals("Y", typeParameterY.getIdentifier());
assertSame(type, typeParameterY.getDeclarator());
assertEquals(1, typeParameterY.getConstraints().size());
JvmTypeConstraint typeConstraint = typeParameterY.getConstraints().get(0);
assertTrue(typeConstraint instanceof JvmUpperBound);
JvmUpperBound upperBound = (JvmUpperBound) typeConstraint;
assertNotNull(upperBound.getTypeReference());
assertEquals("java.util.List<X>", upperBound.getTypeReference().getIdentifier());
JvmParameterizedTypeReference listType = (JvmParameterizedTypeReference) upperBound.getTypeReference();
assertEquals(1, listType.getArguments().size());
JvmTypeReference typeArgument = listType.getArguments().get(0);
assertEquals("X", typeArgument.getIdentifier());
JvmTypeParameter x = type.getTypeParameters().get(0);
assertSame(x, typeArgument.getType());
}
示例7: testPrepareComputation_08
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void testPrepareComputation_08() throws Exception {
JvmType iterableType = getTypeForName(Iterable.class, state);
JvmTypeParameter typeParameter = createTypeParameter("ELEMENT", state);
ParameterizedTypeReference iterableTypeReference = state.getReferenceOwner().newParameterizedTypeReference(iterableType);
iterableTypeReference.addTypeArgument(createTypeReference(typeParameter, state));
assertFalse(iterableTypeReference.isResolved());
TypeExpectation expectation = new TypeExpectation(iterableTypeReference, state, false);
// closure indicates Function1 but Iterable is Function0 - type is Function1
ClosureTypeComputer computer = new ClosureTypeComputer(closure("[]", getContextResourceSet()), expectation, state);
computer.selectStrategy();
LightweightTypeReference closureType = computer.getExpectedClosureType();
assertEquals("java.lang.Iterable.iterator()", computer.getOperation().getIdentifier());
assertEquals("Iterable<Unbound[T]>", getEquivalentSimpleName(closureType));
}
示例8: test_ParameterizedTypes_W_02
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Test
public void test_ParameterizedTypes_W_02() {
String typeName = ParameterizedTypes.class.getName();
JvmGenericType type = (JvmGenericType) getTypeProvider().findTypeByName(typeName);
JvmTypeParameter typeParameterW = type.getTypeParameters().get(4);
assertEquals("W", typeParameterW.getIdentifier());
assertSame(type, typeParameterW.getDeclarator());
assertEquals(2, typeParameterW.getConstraints().size());
JvmTypeConstraint secondTypeConstraint = typeParameterW.getConstraints().get(1);
assertTrue(secondTypeConstraint instanceof JvmUpperBound);
JvmUpperBound secondUpperBound = (JvmUpperBound) secondTypeConstraint;
assertNotNull(secondUpperBound.getTypeReference());
assertFalse(secondUpperBound.getTypeReference().toString(), secondUpperBound.getTypeReference().eIsProxy());
assertEquals("java.io.Serializable", secondUpperBound.getTypeReference().getIdentifier());
}
示例9: createUserData
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
protected void createUserData(EObject eObject, ImmutableMap.Builder<String, String> userData) {
if (eObject instanceof JvmDeclaredType) {
userData.put(SIGNATURE_HASH_KEY, hashProvider.getHash((JvmDeclaredType) eObject));
if (eObject.eContainer() != null) {
userData.put(IS_NESTED_TYPE, Boolean.TRUE.toString());
}
}
if (eObject instanceof JvmGenericType) {
JvmGenericType genericType = (JvmGenericType) eObject;
if (genericType.isInterface())
userData.put(IS_INTERFACE, Boolean.TRUE.toString());
if (!genericType.getTypeParameters().isEmpty()) {
String result = "<";
for (Iterator<JvmTypeParameter> iterator = genericType.getTypeParameters().iterator(); iterator.hasNext();) {
JvmTypeParameter type = iterator.next();
result += type.getSimpleName();
if (iterator.hasNext()) {
result += ",";
}
}
result +=">";
userData.put(TYPE_PARAMETERS, result);
}
}
}
示例10: checkTypeParameterNotUsedInStaticContext
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Check
public void checkTypeParameterNotUsedInStaticContext(JvmTypeReference ref) {
if(ref.getType() instanceof JvmTypeParameter) {
JvmTypeParameter typeParameter = (JvmTypeParameter) ref.getType();
if (!(typeParameter.getDeclarator() instanceof JvmOperation) || !isTypeParameterOfClosureImpl(ref)) {
EObject currentParent = logicalContainerProvider.getNearestLogicalContainer(ref);
while(currentParent != null) {
if(currentParent == typeParameter.eContainer())
return;
else if(isStaticContext(currentParent))
error("Cannot make a static reference to the non-static type " + typeParameter.getName(),
ref, TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE, -1, STATIC_ACCESS_TO_INSTANCE_MEMBER);
currentParent = currentParent.eContainer();
}
}
}
}
示例11: appendTypeSignature
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
/**
* Returns the signature of the given type. If the type declares type parameters, the type
* parameters are included but their bounds are omitted. That is, the type {@code X<T extends CharSequence>}
* will be returned as {@code X<T>}
*
*/
public StringBuilder appendTypeSignature(JvmType type, StringBuilder result) {
result.append(type.getSimpleName());
if(type instanceof JvmTypeParameterDeclarator) {
List<JvmTypeParameter> typeParameters = ((JvmTypeParameterDeclarator) type).getTypeParameters();
if (!typeParameters.isEmpty()) {
result.append("<");
for(int i = 0, size = typeParameters.size(); i < size; i++) {
if (i != 0) {
result.append(", ");
}
result.append(typeParameters.get(i).getName());
}
result.append(">");
}
}
return result;
}
示例12: getBoundTypeArgument
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Override
/* @Nullable */
protected LightweightTypeReference getBoundTypeArgument(ParameterizedTypeReference reference, JvmTypeParameter type, Set<JvmTypeParameter> visiting) {
LightweightMergedBoundTypeArgument boundTypeArgument = getTypeParameterMapping().get(type);
if (boundTypeArgument != null) {
LightweightTypeReference boundReference = boundTypeArgument.getTypeReference();
if (boundReference != null && reference != boundReference) {
if (boundReference instanceof UnboundTypeReference)
return boundReference.copyInto(getOwner());
JvmType boundType = boundReference.getType();
if (boundType != type) {
if (visiting.add(type)) {
try {
LightweightTypeReference result = boundReference.accept(this, visiting);
return result;
} finally {
visiting.remove(type);
}
} else {
return reference;
}
}
}
}
return null;
}
示例13: _computeTypes
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
protected void _computeTypes(XInstanceOfExpression object, ITypeComputationState state) {
ITypeComputationState expressionState = state.withExpectation(state.getReferenceOwner().newReferenceToObject());
expressionState.computeTypes(object.getExpression());
JvmTypeReference type = object.getType();
if (type != null && type.getType() instanceof JvmTypeParameter) {
LightweightTypeReference lightweightReference = state.getReferenceOwner().toLightweightTypeReference(type);
LightweightTypeReference rawTypeRef = lightweightReference.getRawTypeReference();
state.addDiagnostic(new EObjectDiagnosticImpl(
Severity.ERROR,
IssueCodes.INVALID_USE_OF_TYPE_PARAMETER,
"Cannot perform instanceof check against type parameter "+lightweightReference.getHumanReadableName()+". Use its erasure "+rawTypeRef.getHumanReadableName()+" instead since further generic type information will be erased at runtime.",
object.getType(),
null,
-1,
new String[] {
}));
}
LightweightTypeReference bool = getRawTypeForName(Boolean.TYPE, state);
state.acceptActualType(bool);
}
示例14: InstanceExtensionDescriptionWithImplicitFirstArgument
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
public InstanceExtensionDescriptionWithImplicitFirstArgument(
QualifiedName qualifiedName,
JvmFeature feature,
XExpression receiver,
LightweightTypeReference receiverType,
Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> receiverTypeParameterMapping,
int receiverConformanceFlags,
XExpression firstArgument,
LightweightTypeReference firstArgumentType,
Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> firstArgumentTypeParameterMapping,
int bucketId,
boolean visible,
boolean validStaticState) {
super(qualifiedName, feature, receiver, receiverType, receiverTypeParameterMapping, receiverConformanceFlags, EcoreUtil.copy(firstArgument), firstArgumentType,
firstArgumentTypeParameterMapping, ConformanceFlags.NONE, bucketId, visible, validStaticState);
}
开发者ID:eclipse,项目名称:xtext-extras,代码行数:17,代码来源:InstanceExtensionDescriptionWithImplicitFirstArgument.java
示例15: getUnmappedSubstitute
import org.eclipse.xtext.common.types.JvmTypeParameter; //导入依赖的package包/类
@Override
/* @Nullable */
protected LightweightTypeReference getUnmappedSubstitute(ParameterizedTypeReference reference, JvmTypeParameter type, ConstraintVisitingInfo visiting) {
if (!ignoreDeclaredTypeParameters) {
if (isDeclaredTypeParameter(type)) {
return reference;
}
}
ConstraintAwareTypeArgumentCollector collector = new ConstraintAwareTypeArgumentCollector(getOwner());
LightweightTraversalData data = new LightweightTraversalData();
data.getTypeParameterMapping().putAll(getTypeParameterMapping());
reference.accept(collector, data);
LightweightMergedBoundTypeArgument boundTypeArgument = data.getTypeParameterMapping().get(type);
if (boundTypeArgument != null && boundTypeArgument.getTypeReference() != reference) {
return boundTypeArgument.getTypeReference().accept(this, visiting);
}
if (boundTypeArgument != null)
return boundTypeArgument.getTypeReference();
return null;
}