/** * @return all JvmTypes who's static methods are put on the scope of their first argument type (i.e. extension methods). */ public List<JvmType> getExtensionClasses(Resource context) { List<Class<?>> classes = getExtensionClasses(); return getTypes(classes, context); }
/** * @return all JvmType containing static methods which are implicitly imported */ public List<JvmType> getStaticImportClasses(Resource context) { List<Class<?>> classes = getStaticImportClasses(); return getTypes(classes, context); }
public TypeUsages collectTypeUsages(XtextResource resource) { if(resource != null && !resource.getContents().isEmpty()) { this.resource = resource; this.implicitStaticImports = implicitImports.getStaticImportClasses(resource); this.implicitExtensionImports = implicitImports.getExtensionClasses(resource); collectAllReferences(resource.getContents().get(0)); } return typeUsages; }
@Override protected Multimap<Class<?>, Class<?>> simpleComputeExtensionClasses() { List<Class<?>> extensionClasses = implicitlyImportedTypes.getExtensionClasses(); Multimap<Class<?>, Class<?>> result = ArrayListMultimap.create(); for (Class<?> clazz : extensionClasses) { Method[] declaredMethods = clazz.getMethods(); for (Method method : declaredMethods) { if (Modifier.isStatic(method.getModifiers())) { Class<?>[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length > 0) { result.put(parameterTypes[0], clazz); } } } } return result; }
@Override protected List<Class<?>> getStaticImportClasses() { final List<Class<?>> xtextList = super.getStaticImportClasses(); // Insert at the beginning for ensuring the SARL extension is selected before any Xtext extension. xtextList.add(0, PR106ArrayLiterals.class); return xtextList; }
@Override public IFeatureScopeSession newSession(Resource context) { List<JvmType> literalClasses = implicitlyImportedFeatures.getStaticImportClasses(context); List<JvmType> extensionClasses = implicitlyImportedFeatures.getExtensionClasses(context); IFeatureScopeSession result = rootSession.addTypesToStaticScope(literalClasses, extensionClasses); if (context.getContents().isEmpty() || !(context instanceof XtextResource))
@Override protected List<Class<?>> getExtensionClasses() { List<Class<?>> _extensionClasses = super.getExtensionClasses(); return IterableExtensions.<Class<?>>toList(Iterables.<Class<?>>concat(_extensionClasses, Collections.<Class<?>>unmodifiableList(CollectionLiterals.<Class<?>>newArrayList(Widget.class, DatabindingUtil.class)))); } }
@Override protected Collection<String> computeLiteralClassNames() { List<Class<?>> staticImportClasses = implicitlyImportedTypes.getStaticImportClasses(); List<String> result = Lists.newArrayListWithExpectedSize(staticImportClasses.size()); for (Class<?> clazz : staticImportClasses) { result.add(clazz.getName()); } return result; } }
@Override protected List<Class<?>> getExtensionClasses() { List<Class<?>> result = super.getExtensionClasses(); result.remove(Comparable.class); result.remove(Double.class); result.remove(Integer.class); result.remove(BigInteger.class); result.remove(BigDecimal.class); result.remove(double.class); result.add(NumberExtensions.class); result.add(StringUtils.class); result.add(URLEncoder.class); result.add(PersistenceExtensions.class); result.add(BusEvent.class); result.add(Exec.class); result.add(HTTP.class); result.add(Ping.class); result.add(Audio.class); result.add(Voice.class); result.add(Things.class); result.addAll(getActionClasses()); return result; }
@Override protected List<Class<?>> getStaticImportClasses() { List<Class<?>> result = super.getStaticImportClasses(); result.add(BusEvent.class); result.add(Exec.class); result.add(HTTP.class); result.add(Ping.class); result.add(ScriptExecution.class); result.add(LogAction.class); result.add(Audio.class); result.add(Voice.class); result.add(Things.class); result.add(ImperialUnits.class); result.add(SIUnits.class); result.add(MetricPrefix.class); // jodatime static functions result.add(DateTime.class); result.addAll(getActionClasses()); return result; }
@Override protected List<Class<?>> getExtensionClasses() { final List<Class<?>> xtextList = super.getExtensionClasses(); // Insert at the beginning for ensuring the SARL extension is selected before any Xtext extension. xtextList.add(0, PR106ArrayExtensions.class); xtextList.add(0, TimeExtensions.class); // Add features related to numbers. this.numberComparisonFeatures.getImportedFeatures(xtextList); this.numberArithmeticFeatures.getImportedFeatures(xtextList); this.numberCastFeatures.getImportedFeatures(xtextList); return xtextList; }