public boolean addStaticExtensionImport(JvmMember member) { if (member instanceof JvmDeclaredType) { return addStaticExtensionImport((JvmDeclaredType) member, null); } else { return addStaticExtensionImport(member.getDeclaringType(), member.getSimpleName()); } }
/** Replies if the target feature is visible from the type. * * @param fromType - the type from which the feature visibility is tested. * @param target - the feature to test for the visibility. * @return <code>true</code> if the given type can see the target feature. */ public static boolean isVisible(JvmDeclaredType fromType, JvmMember target) { switch (target.getVisibility()) { case DEFAULT: return target.getDeclaringType().getPackageName().equals(fromType.getPackageName()); case PROTECTED: case PUBLIC: return true; case PRIVATE: default: } return false; }
protected void setVisibility(int accessFlags, JvmMember result) { switch (accessFlags & (ACC_PRIVATE | ACC_PROTECTED | ACC_PUBLIC)) { case ACC_PRIVATE: result.setVisibility(JvmVisibility.PRIVATE); return; case ACC_PROTECTED: result.setVisibility(JvmVisibility.PROTECTED); return; case ACC_PUBLIC: result.setVisibility(JvmVisibility.PUBLIC); return; default: result.setVisibility(JvmVisibility.DEFAULT); return; } }
protected void indexFeatures(JvmDeclaredType type, Multimap<Triple<EClass, String, Integer>, JvmFeature> index) { for (JvmMember member : type.getMembers()) { if (member instanceof JvmExecutable) { Triple<EClass, String, Integer> key = Tuples.create(member.eClass(), member.getSimpleName(), ((JvmExecutable) member).getParameters().size()); index.put(key, (JvmFeature) member); } else if (member instanceof JvmField) { Triple<EClass, String, Integer> key = Tuples.create(member.eClass(), member.getSimpleName(), -1); index.put(key, (JvmFeature) member); } } }
private boolean isNestedTypeOf(JvmType child, JvmDeclaredType parent) { if (child instanceof JvmMember) { JvmMember member = (JvmMember) child; return member.getDeclaringType() == parent; } return false; }
protected void processMembers(Map<String, Set<JvmFeature>> result, Collection<? extends JvmMember> members) { for (JvmMember member : members) { if (member instanceof JvmOperation || member instanceof JvmField) { Set<JvmFeature> knownMembers = result.get(member.getSimpleName()); if (knownMembers == null) { // Sets.newLinkedHashSet(capacity) does not exist knownMembers = new LinkedHashSet<JvmFeature>(2); result.put(member.getSimpleName(), knownMembers); } knownMembers.add((JvmFeature) member); } } }
if (member.getVisibility() == JvmVisibility.PRIVATE) { LightweightTypeReference receiverType = getReceiverType(); if (receiverType != null) { if (receiverType.getType() != member.getDeclaringType()) { List<JvmDeclaredType> enclosingTypes = getState().getFeatureScopeSession().getEnclosingTypes(); if (enclosingTypes.contains(member.getDeclaringType())) { String message = String.format("Cannot access the private %s %s%s in a subclass context", getFeatureTypeName(), member.getSimpleName(), getFeatureParameterTypesAsString()); String[] issueData = null; issueData = new String[] { "subclass-context", member.getDeclaringType().getSimpleName() }; AbstractDiagnostic diagnostic = new EObjectDiagnosticImpl(Severity.ERROR, IssueCodes.FEATURE_NOT_VISIBLE, message, featureCall,
int i = 1; for (JvmMember member : type.getMembers()) { String simpleName = member.getSimpleName(); if (simpleName != null) { if (!isRenameable(member)) String simpleName = renameable.getSimpleName(); if (collides(renameable, simpleName, classScope)) { int count = 0; if (count == Integer.MAX_VALUE) throw new IllegalStateException("Cannot find a collision-free name for " + renameable.getIdentifier()); currentName = simpleName + "_" + ++count; } while (collides(renameable, currentName, classScope)); renameable.setSimpleName(currentName); classScope.put(currentName, renameable); } else {
@Override public boolean isVisible(/* @NonNull */ JvmMember member) { return member.getVisibility() != JvmVisibility.PRIVATE; } };
protected SignatureHashBuilder appendMemberSignatures(JvmDeclaredType type, boolean innerTypesOnly) { Iterable<? extends JvmMember> members = type.getMembers(); if(innerTypesOnly) members = filter(members, JvmDeclaredType.class); for (JvmMember member : members) { if (member.getSimpleName() != null) { appendAnnotationReferences(member); if (member instanceof JvmOperation) appendSignature((JvmOperation) member); else if (member instanceof JvmConstructor) appendSignature((JvmConstructor) member); else if (member instanceof JvmField) appendSignature((JvmField) member); else if (member instanceof JvmDeclaredType) { append(member.getQualifiedName()); appendMemberSignatures((JvmDeclaredType) member, true); } append("\n"); } } return this; }
protected EObject findMember(EObject container, String fragment) { if (container instanceof JvmDeclaredType) { EList<JvmMember> members = ((JvmDeclaredType) container).getMembers(); for(JvmMember member: members) { String name = member.getIdentifier(); if(equal(fragment,name)) { return member; } } for(JvmMember member: members) { String name = member.getIdentifier(); if(fragment.startsWith(name)) { EObject match = findMember(member, fragment); if(match != null) return match; } } } return null; }
private String getLocalName(JvmDeclaredType type, JvmMember context) { JvmMember containerCandidate = context; while (containerCandidate != null) { if (containerCandidate == type) { return type.getSimpleName(); } else if (EcoreUtil.isAncestor(containerCandidate, type)) { String contextName = containerCandidate.getQualifiedName('.'); String typeName = type.getQualifiedName('.'); return typeName.substring(contextName.length() + 1); } EObject container = containerCandidate.eContainer(); if (container instanceof JvmMember) { containerCandidate = (JvmMember) container; } else { return null; } } return null; }
uiString.append(type).append(" \'").append(member.getQualifiedName('.')); if ((member instanceof JvmExecutable)) { final Function1<JvmFormalParameter, CharSequence> _function = (JvmFormalParameter it) -> {
JvmIdentifiableElement container = (JvmIdentifiableElement) member.eContainer(); getQualifiedSimpleName(container)); } else if (member instanceof JvmField) { JvmIdentifiableElement container = (JvmIdentifiableElement) member.eContainer(); } else if (member instanceof JvmConstructor) { message = String.format("The %s %s%s is deprecated", FeatureKinds.getTypeName(member), getQualifiedSimpleName(member.getDeclaringType()), uiStrings.parameters(member)); } else {
protected void setCompilationStrategy(/* @Nullable */ JvmMember member, /* @Nullable */ StringConcatenationClient strategy) { if(member == null || strategy == null) return; CompilationTemplateAdapter adapter = new CompilationTemplateAdapter(); adapter.setCompilationTemplate(strategy); member.eAdapters().add(adapter); }
private boolean isPrivateAPICaller(JvmIdentifiableElement element) { JvmMember featureContainer = EcoreUtil2.getContainerOfType(element, JvmMember.class); while (featureContainer != null) { if (this.annotations.findAnnotation(featureContainer, PrivateAPI.class.getName()) != null) { return true; } featureContainer = EcoreUtil2.getContainerOfType(featureContainer.eContainer(), JvmMember.class); } return false; }
protected boolean isInheritanceRelation(JvmMember overriding, JvmMember overridden) { return superTypeCollector.isSuperType(overriding.getDeclaringType(), overridden.getDeclaringType()); }
protected void processMembers(Map<String, Set<JvmFeature>> result, Collection<? extends JvmMember> members) { for (JvmMember member : members) { if (member instanceof JvmOperation || member instanceof JvmField) { Set<JvmFeature> knownMembers = result.get(member.getSimpleName()); if (knownMembers == null) { // Sets.newLinkedHashSet(capacity) does not exist knownMembers = new LinkedHashSet<JvmFeature>(2); result.put(member.getSimpleName(), knownMembers); } knownMembers.add((JvmFeature) member); } } }
@Override public boolean isVisible(/* @NonNull */ JvmMember member) { return member.getVisibility() == JvmVisibility.PUBLIC; }
protected EObject findMember(EObject container, String fragment) { if (container instanceof JvmDeclaredType) { EList<JvmMember> members = ((JvmDeclaredType) container).getMembers(); for(JvmMember member: members) { String name = member.getIdentifier(); if(equal(fragment,name)) { return member; } if(fragment.startsWith(name)) { EObject match = findMember(member, fragment); if(match != null) return match; } } } return null; }