Search in sources :

Example 6 with MemberCollector

use of org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector in project n4js by eclipse.

the class MissingApiMembersForTranspiler method create.

/**
 * Returns a tuple of collections used by transpiler to generate interface or class members.
 */
public static MissingApiMembersForTranspiler create(ContainerTypesHelper containerTypesHelper, ScriptApiTracker apiTracker, TClassifier type, ConcreteMembersOrderedForTranspiler cmoft, Script context) {
    MemberCollector collector = containerTypesHelper.fromContext(context);
    // IDE-1510 create missing API-methods here.
    MemberList<TMethod> missingApiMethods = new MemberList<>();
    if (type instanceof TClass) {
        List<TMethod> c = apiTracker.computeMissingApiMethods((TClass) type, context);
        missingApiMethods.addAll(c);
        List<VirtualApiTMethod> missingAPIfromInheritance = apiTracker.computeMethodDiff((TClass) type, collector, cmoft.ownedAndMixedInConcreteMembers, missingApiMethods);
        missingApiMethods.addAll(missingAPIfromInheritance);
    }
    if (type instanceof TInterface) {
        List<TMethod> c = apiTracker.computeMissingApiMethods((TInterface) type, context);
        missingApiMethods.addAll(c);
    }
    // IDE-1510 create missing API-fields here.
    List<AccessorTuple> missingApiAccessorTuples = new ArrayList<>();
    {
        List<AccessorTuple> computedMissingApiGetterSetter = apiTracker.computeMissingApiGetterSetter((TN4Classifier) type, cmoft.concreteAccessorTuples);
        List<AccessorTuple> computedMissingApiFields = apiTracker.computeMissingApiFields((TN4Classifier) type);
        // In case of field vs. getter the implementation should be free to choose the form.
        // So filter out all missing set/get pairs which are backed by a field (either concrete or inherited)
        List<AccessorTuple> filteredMissingApiGetterSetter = filterOutTuplesImplementedByField(computedMissingApiGetterSetter, cmoft.ownedAndMixedInConcreteMembers, cmoft.concreteInheritedMembers);
        // Some logic applies to missing fields which are backed by a getter/setter. The situation here is a
        // little bit more complex as the set/get must be processed as a pair and one could be missing or they stem
        // from different (super-)types.
        // *Beware* not side-effect free since we have to mix in virtual getter/setter into an existing but
        // incomplete accessor-pairs
        List<AccessorTuple> filteredMissingApiFields0 = filterMissingApiFieldsAndEnrichExistingTuples(computedMissingApiFields, cmoft.concreteAccessorTuples);
        List<AccessorTuple> filteredMissingApiFields = filterMissingApiFieldsImplementedBySuperGetSet(filteredMissingApiFields0, cmoft.concreteInheritedMembers);
        missingApiAccessorTuples.addAll(filteredMissingApiGetterSetter);
        missingApiAccessorTuples.addAll(filteredMissingApiFields);
    }
    MemberList<TField> fieldsOverridingAccessors = getFieldsOverridingAccessor(cmoft.ownedAndMixedInConcreteMembers, cmoft.concreteInheritedMembers);
    // compute the list of mixed in fields, which do not override any Accessor (handled separately)
    MemberList<TField> fieldsPurelyMixedInNotOverridingAccessor = new MemberList<>();
    fieldsPurelyMixedInNotOverridingAccessor.addAll(cmoft.ownedAndMixedInConcreteMembers.stream().filter(it -> it instanceof TField && // must stem from different type
    it.getContainingType() != type).map(it -> (TField) it).filter(// remove the ones overriding get/set
    it -> !fieldsOverridingAccessors.contains(it)).collect(Collectors.toList()));
    return new MissingApiMembersForTranspiler(missingApiMethods, missingApiAccessorTuples);
}
Also used : VirtualApiTMethod(org.eclipse.n4js.transpiler.utils.ScriptApiTracker.VirtualApiTMethod) TField(org.eclipse.n4js.ts.types.TField) TMember(org.eclipse.n4js.ts.types.TMember) Script(org.eclipse.n4js.n4JS.Script) TClass(org.eclipse.n4js.ts.types.TClass) TMethod(org.eclipse.n4js.ts.types.TMethod) AccessorTuple(org.eclipse.n4js.ts.types.util.AccessorTuple) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) TSetter(org.eclipse.n4js.ts.types.TSetter) TGetter(org.eclipse.n4js.ts.types.TGetter) List(java.util.List) TN4Classifier(org.eclipse.n4js.ts.types.TN4Classifier) ContainerTypesHelper(org.eclipse.n4js.utils.ContainerTypesHelper) Stream(java.util.stream.Stream) TClassifier(org.eclipse.n4js.ts.types.TClassifier) TInterface(org.eclipse.n4js.ts.types.TInterface) MemberList(org.eclipse.n4js.ts.types.util.MemberList) Optional(java.util.Optional) MemberCollector(org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector) VirtualApiTMethod(org.eclipse.n4js.transpiler.utils.ScriptApiTracker.VirtualApiTMethod) TMethod(org.eclipse.n4js.ts.types.TMethod) TField(org.eclipse.n4js.ts.types.TField) MemberList(org.eclipse.n4js.ts.types.util.MemberList) TInterface(org.eclipse.n4js.ts.types.TInterface) TN4Classifier(org.eclipse.n4js.ts.types.TN4Classifier) VirtualApiTMethod(org.eclipse.n4js.transpiler.utils.ScriptApiTracker.VirtualApiTMethod) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) MemberList(org.eclipse.n4js.ts.types.util.MemberList) AccessorTuple(org.eclipse.n4js.ts.types.util.AccessorTuple) MemberCollector(org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector) TClass(org.eclipse.n4js.ts.types.TClass)

Example 7 with MemberCollector

use of org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector in project n4js by eclipse.

the class N4JSMemberRedefinitionValidator method addIssueToMemberOrInterfaceReference.

private void addIssueToMemberOrInterfaceReference(RedefinitionType redefinitionType, TMember overriding, TMember implemented, String message, String issueCode, String... issueData) {
    if (redefinitionType == RedefinitionType.overridden && overriding.getContainingType() != getCurrentClassifier()) {
        throw new IllegalStateException("must not happen as member is not consumed");
    }
    TClassifier currentClassifier = getCurrentClassifier();
    if (overriding.getContainingType() == currentClassifier) {
        addIssue(message, overriding.getAstElement(), N4JSPackage.Literals.PROPERTY_NAME_OWNER__DECLARED_NAME, issueCode, issueData);
    } else {
        MemberCollector memberCollector = containerTypesHelper.fromContext(getCurrentClassifierDefinition());
        ContainerType<?> bequestingType = memberCollector.directSuperTypeBequestingMember(currentClassifier, implemented);
        Optional<ParameterizedTypeRef> optRef = StreamSupport.stream(getCurrentClassifierDefinition().getImplementedOrExtendedInterfaceRefs().spliterator(), false).filter(ref -> ref.getDeclaredType() == bequestingType).findAny();
        ParameterizedTypeRef ref = optRef.get();
        EStructuralFeature feature = ref.eContainingFeature();
        List<?> list = (List<?>) getCurrentClassifierDefinition().eGet(feature);
        int index = list.indexOf(ref);
        addIssue(message, getCurrentClassifierDefinition(), feature, index, issueCode, issueData);
    }
}
Also used : TClassifier(org.eclipse.n4js.ts.types.TClassifier) ParameterizedTypeRef(org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef) IssueCodes.getMessageForCLF_REDEFINED_NON_ACCESSIBLE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_REDEFINED_NON_ACCESSIBLE) CLF_CONSUMED_INHERITED_MEMBER_UNSOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.CLF_CONSUMED_INHERITED_MEMBER_UNSOLVABLE_CONFLICT) TClass(org.eclipse.n4js.ts.types.TClass) ParameterizedTypeRef(org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef) IssueCodes.getMessageForCLF_OVERRIDE_FINAL(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_FINAL) TSetter(org.eclipse.n4js.ts.types.TSetter) IssueCodes.getMessageForCLF_IMPLEMENT_MEMBERTYPE_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_IMPLEMENT_MEMBERTYPE_INCOMPATIBLE) IssueCodes.getMessageForCLF_MISSING_IMPLEMENTATION(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_MISSING_IMPLEMENTATION) IssueCodes.getMessageForCLF_OVERRIDE_VISIBILITY(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_VISIBILITY) Type(org.eclipse.n4js.ts.types.Type) IssueCodes.getMessageForCLF_OVERRIDE_CONST(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_CONST) Map(java.util.Map) CLF_PSEUDO_REDEFINED_SPEC_CTOR_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.CLF_PSEUDO_REDEFINED_SPEC_CTOR_INCOMPATIBLE) IssueUserDataKeys(org.eclipse.n4js.validation.IssueUserDataKeys) Check(org.eclipse.xtext.validation.Check) CLF_CONSUMED_FIELD_ACCESSOR_PAIR_INCOMPLETE(org.eclipse.n4js.validation.IssueCodes.CLF_CONSUMED_FIELD_ACCESSOR_PAIR_INCOMPLETE) CLF_OVERRIDE_ANNOTATION(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_ANNOTATION) CLF_OVERRIDE_MEMBERTYPE_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_MEMBERTYPE_INCOMPATIBLE) IssueCodes.getMessageForCLF_OVERRIDE_WITH_FINAL_OR_CONST_FIELD(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_WITH_FINAL_OR_CONST_FIELD) CLF_REDEFINED_TYPE_NOT_SAME_TYPE(org.eclipse.n4js.validation.IssueCodes.CLF_REDEFINED_TYPE_NOT_SAME_TYPE) IssueCodes.getMessageForCLF_OVERRIDE_FIELD_REQUIRES_ACCESSOR_PAIR(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_FIELD_REQUIRES_ACCESSOR_PAIR) CLF_NON_ACCESSIBLE_ABSTRACT_MEMBERS(org.eclipse.n4js.validation.IssueCodes.CLF_NON_ACCESSIBLE_ABSTRACT_MEMBERS) Set(java.util.Set) CLF_REDEFINED_METHOD_TYPE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.CLF_REDEFINED_METHOD_TYPE_CONFLICT) CLF_IMPLEMENT_MEMBERTYPE_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.CLF_IMPLEMENT_MEMBERTYPE_INCOMPATIBLE) N4ClassifierDefinition(org.eclipse.n4js.n4JS.N4ClassifierDefinition) MethodDeclaration(org.eclipse.n4js.n4JS.MethodDeclaration) CLF_OVERRIDE_FINAL(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_FINAL) Iterables(com.google.common.collect.Iterables) MemberType(org.eclipse.n4js.ts.types.MemberType) MemberAccessModifier(org.eclipse.n4js.ts.types.MemberAccessModifier) IssueCodes.getMessageForCLF_OVERRIDEN_CONCRETE_WITH_ABSTRACT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDEN_CONCRETE_WITH_ABSTRACT) TypeUtils(org.eclipse.n4js.ts.utils.TypeUtils) ArrayList(java.util.ArrayList) TModule(org.eclipse.n4js.ts.types.TModule) TypeSystemHelper(org.eclipse.n4js.typesystem.TypeSystemHelper) RuleEnvironmentExtensions(org.eclipse.n4js.typesystem.RuleEnvironmentExtensions) TInterface(org.eclipse.n4js.ts.types.TInterface) MemberMatrix(org.eclipse.n4js.validation.validators.utils.MemberMatrix) IssueCodes.getMessageForCLF_OVERRIDE_NON_EXISTENT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_NON_EXISTENT) MemberVisibilityChecker(org.eclipse.n4js.scoping.accessModifiers.MemberVisibilityChecker) AbstractN4JSDeclarativeValidator(org.eclipse.n4js.validation.AbstractN4JSDeclarativeValidator) StreamSupport(java.util.stream.StreamSupport) CLF_OVERRIDE_NON_EXISTENT(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_NON_EXISTENT) IssueCodes.getMessageForCLF_OVERRIDE_MEMBERTYPE_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_MEMBERTYPE_INCOMPATIBLE) N4JSLanguageUtils(org.eclipse.n4js.utils.N4JSLanguageUtils) EcoreUtil(org.eclipse.emf.ecore.util.EcoreUtil) NameStaticPair(org.eclipse.n4js.ts.types.util.NameStaticPair) FunctionTypeExprOrRef(org.eclipse.n4js.ts.typeRefs.FunctionTypeExprOrRef) IssueCodes.getMessageForCLF_OVERRIDE_NON_EXISTENT_INTERFACE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_NON_EXISTENT_INTERFACE) N4JSTypeSystem(org.eclipse.n4js.typesystem.N4JSTypeSystem) FunctionTypeExpression(org.eclipse.n4js.ts.typeRefs.FunctionTypeExpression) IssueCodes.getMessageForCLF_UNMATCHED_ACCESSOR_OVERRIDE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_UNMATCHED_ACCESSOR_OVERRIDE) IssueCodes.getMessageForCLF_NON_ACCESSIBLE_ABSTRACT_MEMBERS(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_NON_ACCESSIBLE_ABSTRACT_MEMBERS) Arrays(org.eclipse.xtext.util.Arrays) RuleEnvironment(org.eclipse.xsemantics.runtime.RuleEnvironment) SourceAwareIterator(org.eclipse.n4js.validation.validators.utils.MemberMatrix.SourceAwareIterator) Inject(com.google.inject.Inject) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) ContainerType(org.eclipse.n4js.ts.types.ContainerType) IssueCodes.getMessageForCLF_REDEFINED_MEMBER_TYPE_INVALID(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_REDEFINED_MEMBER_TYPE_INVALID) IssueCodes.getMessageForCLF_OVERRIDE_ANNOTATION(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_OVERRIDE_ANNOTATION) CLF_OVERRIDE_FIELD_REQUIRES_ACCESSOR_PAIR(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_FIELD_REQUIRES_ACCESSOR_PAIR) CLF_MISSING_IMPLEMENTATION(org.eclipse.n4js.validation.IssueCodes.CLF_MISSING_IMPLEMENTATION) CLF_OVERRIDE_VISIBILITY(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_VISIBILITY) MemberList(org.eclipse.n4js.ts.types.util.MemberList) N4InterfaceDeclaration(org.eclipse.n4js.n4JS.N4InterfaceDeclaration) TypeRef(org.eclipse.n4js.ts.typeRefs.TypeRef) N4ClassDefinition(org.eclipse.n4js.n4JS.N4ClassDefinition) IssueCodes.getMessageForCLF_CONSUMED_FIELD_ACCESSOR_PAIR_INCOMPLETE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_CONSUMED_FIELD_ACCESSOR_PAIR_INCOMPLETE) TField(org.eclipse.n4js.ts.types.TField) Collection(java.util.Collection) IssueCodes.getMessageForCLF_MISSING_IMPLEMENTATION_EXT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_MISSING_IMPLEMENTATION_EXT) JavaScriptVariantHelper(org.eclipse.n4js.validation.JavaScriptVariantHelper) IssueCodes.getMessageForCLF_PSEUDO_REDEFINED_SPEC_CTOR_INCOMPATIBLE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_PSEUDO_REDEFINED_SPEC_CTOR_INCOMPATIBLE) EObject(org.eclipse.emf.ecore.EObject) TMethod(org.eclipse.n4js.ts.types.TMethod) Collectors(java.util.stream.Collectors) List(java.util.List) TClassifier(org.eclipse.n4js.ts.types.TClassifier) IssueCodes.getMessageForCLF_UNMATCHED_ACCESSOR_OVERRIDE_JS(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_UNMATCHED_ACCESSOR_OVERRIDE_JS) Entry(java.util.Map.Entry) Resource(org.eclipse.emf.ecore.resource.Resource) CLF_OVERRIDE_CONST(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_CONST) Optional(java.util.Optional) MemberRedefinitionUtils(org.eclipse.n4js.validation.validators.utils.MemberRedefinitionUtils) IssueCodes.getMessageForCLF_REDEFINED_TYPE_NOT_SAME_TYPE(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_REDEFINED_TYPE_NOT_SAME_TYPE) HashMap(java.util.HashMap) N4JSPackage(org.eclipse.n4js.n4JS.N4JSPackage) CLF_OVERRIDE_NON_EXISTENT_INTERFACE(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_NON_EXISTENT_INTERFACE) CLF_UNMATCHED_ACCESSOR_OVERRIDE(org.eclipse.n4js.validation.IssueCodes.CLF_UNMATCHED_ACCESSOR_OVERRIDE) FieldAccessor(org.eclipse.n4js.ts.types.FieldAccessor) Iterators(com.google.common.collect.Iterators) HashSet(java.util.HashSet) IssueCodes.getMessageForCLF_CONSUMED_MEMBER_SOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_CONSUMED_MEMBER_SOLVABLE_CONFLICT) ContainerTypesHelper(org.eclipse.n4js.utils.ContainerTypesHelper) EcoreUtil2(org.eclipse.xtext.EcoreUtil2) IssueCodes.getMessageForCLF_REDEFINED_METHOD_TYPE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_REDEFINED_METHOD_TYPE_CONFLICT) CLF_MISSING_IMPLEMENTATION_EXT(org.eclipse.n4js.validation.IssueCodes.CLF_MISSING_IMPLEMENTATION_EXT) MemberCube(org.eclipse.n4js.validation.validators.utils.MemberCube) MemberCollector(org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector) IssueCodes.getMessageForCLF_CONSUMED_MEMBER_UNSOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_CONSUMED_MEMBER_UNSOLVABLE_CONFLICT) CLF_OVERRIDEN_CONCRETE_WITH_ABSTRACT(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDEN_CONCRETE_WITH_ABSTRACT) Result(org.eclipse.xsemantics.runtime.Result) TMember(org.eclipse.n4js.ts.types.TMember) CLF_CONSUMED_MEMBER_UNSOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.CLF_CONSUMED_MEMBER_UNSOLVABLE_CONFLICT) IssueCodes.getMessageForCLF_CONSUMED_INHERITED_MEMBER_UNSOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.getMessageForCLF_CONSUMED_INHERITED_MEMBER_UNSOLVABLE_CONFLICT) CLF_REDEFINED_MEMBER_TYPE_INVALID(org.eclipse.n4js.validation.IssueCodes.CLF_REDEFINED_MEMBER_TYPE_INVALID) CLF_OVERRIDE_WITH_FINAL_OR_CONST_FIELD(org.eclipse.n4js.validation.IssueCodes.CLF_OVERRIDE_WITH_FINAL_OR_CONST_FIELD) AccessModifiers(org.eclipse.n4js.ts.types.util.AccessModifiers) CLF_CONSUMED_MEMBER_SOLVABLE_CONFLICT(org.eclipse.n4js.validation.IssueCodes.CLF_CONSUMED_MEMBER_SOLVABLE_CONFLICT) CLF_REDEFINED_NON_ACCESSIBLE(org.eclipse.n4js.validation.IssueCodes.CLF_REDEFINED_NON_ACCESSIBLE) EValidatorRegistrar(org.eclipse.xtext.validation.EValidatorRegistrar) CLF_UNMATCHED_ACCESSOR_OVERRIDE_JS(org.eclipse.n4js.validation.IssueCodes.CLF_UNMATCHED_ACCESSOR_OVERRIDE_JS) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) ArrayList(java.util.ArrayList) MemberList(org.eclipse.n4js.ts.types.util.MemberList) List(java.util.List) MemberCollector(org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector)

Example 8 with MemberCollector

use of org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector in project n4js by eclipse.

the class N4JSDReader method getRefMember.

// TODO fqn of getter vs setter, fqn of static vs instance
private TMember getRefMember(ContainerType<?> ct, FullMemberReference ref) {
    TMember member = null;
    String memberName = ref.getMemberName();
    boolean _static = ref.isStaticMember();
    MemberCollector memberCollector = containerTypesHelper.fromContext(ct);
    member = memberCollector.findMember(ct, memberName, false, _static);
    if (member == null) {
        member = memberCollector.findMember(ct, memberName, false, !_static);
        if (member == null) {
            member = memberCollector.findMember(ct, memberName, true, _static);
            if (member == null) {
                member = memberCollector.findMember(ct, memberName, true, !_static);
            }
        }
    }
    return member;
}
Also used : TMember(org.eclipse.n4js.ts.types.TMember) MemberCollector(org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector)

Aggregations

MemberCollector (org.eclipse.n4js.utils.ContainerTypesHelper.MemberCollector)8 TMember (org.eclipse.n4js.ts.types.TMember)7 TClassifier (org.eclipse.n4js.ts.types.TClassifier)6 ArrayList (java.util.ArrayList)5 List (java.util.List)5 Optional (java.util.Optional)4 Collectors (java.util.stream.Collectors)4 TClass (org.eclipse.n4js.ts.types.TClass)4 TField (org.eclipse.n4js.ts.types.TField)4 TInterface (org.eclipse.n4js.ts.types.TInterface)4 TSetter (org.eclipse.n4js.ts.types.TSetter)4 MemberList (org.eclipse.n4js.ts.types.util.MemberList)4 ContainerTypesHelper (org.eclipse.n4js.utils.ContainerTypesHelper)4 Inject (com.google.inject.Inject)3 HashMap (java.util.HashMap)3 HashSet (java.util.HashSet)3 EObject (org.eclipse.emf.ecore.EObject)3 Script (org.eclipse.n4js.n4JS.Script)3 Collections.emptyList (java.util.Collections.emptyList)2 Map (java.util.Map)2