Search in sources :

Example 1 with LightweightBoundTypeArgument

use of org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument in project xtext-xtend by eclipse.

the class ActualTypeArgumentCollectorTest method assertMapping.

public Map<JvmTypeParameter, List<LightweightBoundTypeArgument>> assertMapping(final Map<JvmTypeParameter, List<LightweightBoundTypeArgument>> mapping, final String typeParamName, final Triple<String, VarianceInfo, VarianceInfo>... mappedTypes) {
    final Set<JvmTypeParameter> allKeys = mapping.keySet();
    for (final JvmTypeParameter key : allKeys) {
        String _simpleName = key.getSimpleName();
        boolean _equals = Objects.equal(_simpleName, typeParamName);
        if (_equals) {
            Assert.assertNotNull(mappedTypes);
            final List<LightweightBoundTypeArgument> mappingData = mapping.get(key);
            final Function1<LightweightBoundTypeArgument, String> _function = (LightweightBoundTypeArgument it) -> {
                StringConcatenation _builder = new StringConcatenation();
                LightweightTypeReference _typeReference = it.getTypeReference();
                _builder.append(_typeReference);
                _builder.append("(");
                VarianceInfo _declaredVariance = it.getDeclaredVariance();
                _builder.append(_declaredVariance);
                _builder.append("/");
                VarianceInfo _actualVariance = it.getActualVariance();
                _builder.append(_actualVariance);
                _builder.append(")");
                return _builder.toString();
            };
            Assert.assertEquals(ListExtensions.<LightweightBoundTypeArgument, String>map(mappingData, _function).toString(), ((List<Triple<String, VarianceInfo, VarianceInfo>>) Conversions.doWrapArray(mappedTypes)).size(), mappingData.size());
            final Function1<LightweightBoundTypeArgument, Triple<String, VarianceInfo, VarianceInfo>> _function_1 = (LightweightBoundTypeArgument it) -> {
                return Tuples.<String, VarianceInfo, VarianceInfo>create(it.getTypeReference().toString(), it.getDeclaredVariance(), it.getActualVariance());
            };
            Assert.assertEquals(IterableExtensions.<Triple<String, VarianceInfo, VarianceInfo>>toList(((Iterable<Triple<String, VarianceInfo, VarianceInfo>>) Conversions.doWrapArray(mappedTypes))), IterableExtensions.<Triple<String, VarianceInfo, VarianceInfo>>toList(ListExtensions.<LightweightBoundTypeArgument, Triple<String, VarianceInfo, VarianceInfo>>map(mappingData, _function_1)));
            return mapping;
        }
    }
    if ((mappedTypes != null)) {
        StringConcatenation _builder = new StringConcatenation();
        _builder.append("No mapping for ");
        _builder.append(typeParamName);
        _builder.append(" in ");
        final Function1<JvmTypeParameter, String> _function_2 = (JvmTypeParameter it) -> {
            return it.getSimpleName();
        };
        Iterable<String> _map = IterableExtensions.<JvmTypeParameter, String>map(mapping.keySet(), _function_2);
        _builder.append(_map);
        Assert.fail(_builder.toString());
    }
    return mapping;
}
Also used : LightweightTypeReference(org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference) VarianceInfo(org.eclipse.xtext.xbase.typesystem.util.VarianceInfo) JvmTypeParameter(org.eclipse.xtext.common.types.JvmTypeParameter) Triple(org.eclipse.xtext.util.Triple) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) LightweightBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument)

Example 2 with LightweightBoundTypeArgument

use of org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument in project xtext-xtend by eclipse.

the class ActualTypeArgumentMergeTest method merge.

public Pair<Map<JvmTypeParameter, List<LightweightBoundTypeArgument>>, LightweightMergedBoundTypeArgument> merge(final Map<JvmTypeParameter, List<LightweightBoundTypeArgument>> mapping, final String typeParamName) {
    final Set<JvmTypeParameter> allKeys = mapping.keySet();
    for (final JvmTypeParameter key : allKeys) {
        String _simpleName = key.getSimpleName();
        boolean _equals = Objects.equal(_simpleName, typeParamName);
        if (_equals) {
            final List<LightweightBoundTypeArgument> mappingData = mapping.get(key);
            LightweightMergedBoundTypeArgument _merge = this.merger.merge(mappingData, this.getOwner());
            return Pair.<Map<JvmTypeParameter, List<LightweightBoundTypeArgument>>, LightweightMergedBoundTypeArgument>of(mapping, _merge);
        }
    }
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("No mapping for ");
    _builder.append(typeParamName);
    _builder.append(" in ");
    final Function1<JvmTypeParameter, String> _function = (JvmTypeParameter it) -> {
        return it.getSimpleName();
    };
    Iterable<String> _map = IterableExtensions.<JvmTypeParameter, String>map(mapping.keySet(), _function);
    _builder.append(_map);
    Assert.fail(_builder.toString());
    return null;
}
Also used : LightweightMergedBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightMergedBoundTypeArgument) JvmTypeParameter(org.eclipse.xtext.common.types.JvmTypeParameter) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) LightweightBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument) Map(java.util.Map)

Example 3 with LightweightBoundTypeArgument

use of org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument in project xtext-xtend by eclipse.

the class DeferredTypeParameterHintCollectorTest method hasHintsFor.

public List<LightweightBoundTypeArgument> hasHintsFor(final Map<JvmTypeParameter, LightweightMergedBoundTypeArgument> mapping, final String typeParamName) {
    final Set<JvmTypeParameter> allKeys = mapping.keySet();
    for (final JvmTypeParameter key : allKeys) {
        String _simpleName = key.getSimpleName();
        boolean _equals = Objects.equal(_simpleName, typeParamName);
        if (_equals) {
            LightweightTypeReference _typeReference = mapping.get(key).getTypeReference();
            final UnboundTypeReference unbound = ((UnboundTypeReference) _typeReference);
            final Consumer<LightweightBoundTypeArgument> _function = (LightweightBoundTypeArgument it) -> {
                Assert.assertEquals(BoundTypeArgumentSource.INFERRED_LATER, it.getSource());
            };
            unbound.getAllHints().forEach(_function);
            return unbound.getAllHints();
        }
    }
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("No mapping for ");
    _builder.append(typeParamName);
    _builder.append(" in ");
    final Function1<JvmTypeParameter, String> _function_1 = (JvmTypeParameter it) -> {
        return it.getSimpleName();
    };
    Iterable<String> _map = IterableExtensions.<JvmTypeParameter, String>map(mapping.keySet(), _function_1);
    _builder.append(_map);
    Assert.fail(_builder.toString());
    return null;
}
Also used : LightweightTypeReference(org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference) JvmTypeParameter(org.eclipse.xtext.common.types.JvmTypeParameter) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) UnboundTypeReference(org.eclipse.xtext.xbase.typesystem.references.UnboundTypeReference) LightweightBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument)

Example 4 with LightweightBoundTypeArgument

use of org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument in project xtext-xtend by eclipse.

the class DeferredTypeParameterHintCollectorTest method like.

public List<LightweightBoundTypeArgument> like(final List<LightweightBoundTypeArgument> mappingData, final Triple<String, VarianceInfo, VarianceInfo>... mappedTypes) {
    final Function1<LightweightBoundTypeArgument, String> _function = (LightweightBoundTypeArgument it) -> {
        StringConcatenation _builder = new StringConcatenation();
        String _string = it.getTypeReference().toString();
        _builder.append(_string);
        _builder.append("(");
        VarianceInfo _declaredVariance = it.getDeclaredVariance();
        _builder.append(_declaredVariance);
        _builder.append("/");
        VarianceInfo _actualVariance = it.getActualVariance();
        _builder.append(_actualVariance);
        _builder.append(")");
        return _builder.toString();
    };
    Assert.assertEquals(ListExtensions.<LightweightBoundTypeArgument, String>map(mappingData, _function).toString(), ((List<Triple<String, VarianceInfo, VarianceInfo>>) Conversions.doWrapArray(mappedTypes)).size(), mappingData.size());
    List<Triple<String, VarianceInfo, VarianceInfo>> _list = IterableExtensions.<Triple<String, VarianceInfo, VarianceInfo>>toList(((Iterable<Triple<String, VarianceInfo, VarianceInfo>>) Conversions.doWrapArray(mappedTypes)));
    final Function1<LightweightBoundTypeArgument, Triple<String, VarianceInfo, VarianceInfo>> _function_1 = (LightweightBoundTypeArgument it) -> {
        return Tuples.<String, VarianceInfo, VarianceInfo>create(it.getTypeReference().toString(), it.getDeclaredVariance(), it.getActualVariance());
    };
    Assert.assertEquals(((Object) _list), IterableExtensions.<Triple<String, VarianceInfo, VarianceInfo>>toList(ListExtensions.<LightweightBoundTypeArgument, Triple<String, VarianceInfo, VarianceInfo>>map(mappingData, _function_1)));
    return mappingData;
}
Also used : Triple(org.eclipse.xtext.util.Triple) VarianceInfo(org.eclipse.xtext.xbase.typesystem.util.VarianceInfo) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) LightweightBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument)

Example 5 with LightweightBoundTypeArgument

use of org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument in project xtext-xtend by eclipse.

the class DeferredTypeParameterHintCollectorTest method createOwner.

@Override
protected StandardTypeReferenceOwner createOwner() {
    CommonTypeComputationServices _services = this.getServices();
    ResourceSet _contextResourceSet = this.getContextResourceSet();
    return new StandardTypeReferenceOwner(_services, _contextResourceSet) {

        @Override
        public void acceptHint(final Object handle, final LightweightBoundTypeArgument boundTypeArgument) {
            DeferredTypeParameterHintCollectorTest.this.hints.put(handle, boundTypeArgument);
        }

        @Override
        public List<LightweightBoundTypeArgument> getAllHints(final Object handle) {
            return DeferredTypeParameterHintCollectorTest.this.hints.get(handle);
        }

        @Override
        public boolean isResolved(final Object handle) {
            return false;
        }
    };
}
Also used : CommonTypeComputationServices(org.eclipse.xtext.xbase.typesystem.util.CommonTypeComputationServices) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) StandardTypeReferenceOwner(org.eclipse.xtext.xbase.typesystem.references.StandardTypeReferenceOwner) LightweightBoundTypeArgument(org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument)

Aggregations

LightweightBoundTypeArgument (org.eclipse.xtext.xbase.typesystem.references.LightweightBoundTypeArgument)8 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)6 JvmTypeParameter (org.eclipse.xtext.common.types.JvmTypeParameter)4 Triple (org.eclipse.xtext.util.Triple)4 LightweightTypeReference (org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference)4 VarianceInfo (org.eclipse.xtext.xbase.typesystem.util.VarianceInfo)4 XtendFunction (org.eclipse.xtend.core.xtend.XtendFunction)2 JvmFormalParameter (org.eclipse.xtext.common.types.JvmFormalParameter)2 JvmOperation (org.eclipse.xtext.common.types.JvmOperation)2 LightweightMergedBoundTypeArgument (org.eclipse.xtext.xbase.typesystem.references.LightweightMergedBoundTypeArgument)2 Map (java.util.Map)1 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)1 StandardTypeReferenceOwner (org.eclipse.xtext.xbase.typesystem.references.StandardTypeReferenceOwner)1 UnboundTypeReference (org.eclipse.xtext.xbase.typesystem.references.UnboundTypeReference)1 CommonTypeComputationServices (org.eclipse.xtext.xbase.typesystem.util.CommonTypeComputationServices)1