Skip to content

Commit

Permalink
Better distinction between fields and variables within the processor
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexisDrogoul committed May 27, 2021
1 parent 5da0240 commit ba78e15
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 22 deletions.
Binary file modified msi.gama.processor/processor/plugins/msi.gama.processor_1.4.0.jar
Binary file not shown.
20 changes: 12 additions & 8 deletions msi.gama.processor/src/msi/gama/precompiler/ProcessorContext.java
Expand Up @@ -47,7 +47,7 @@ public class ProcessorContext implements ProcessingEnvironment, RoundEnvironment
public static final StandardLocation OUT = StandardLocation.SOURCE_OUTPUT;
private final ProcessingEnvironment delegate;
private RoundEnvironment round;
private TypeMirror iSkill, iAgent;
private TypeMirror iSkill, iAgent, iVarAndActionSupport;
public volatile String currentPlugin;
public volatile String shortcut;
public List<String> roots;
Expand All @@ -70,8 +70,7 @@ public DocumentBuilder getBuilder() {
}

public String nameOf(final TypeElement e) {
if (e.getNestingKind() == NestingKind.TOP_LEVEL)
return e.getQualifiedName().toString();
if (e.getNestingKind() == NestingKind.TOP_LEVEL) return e.getQualifiedName().toString();
return nameOf((TypeElement) e.getEnclosingElement()) + "." + e.getSimpleName().toString();
}

Expand Down Expand Up @@ -113,6 +112,14 @@ public TypeMirror getISkill() {
return iSkill;
}

public TypeMirror getIVarAndActionSupport() {
if (iVarAndActionSupport == null) {
iVarAndActionSupport = delegate.getElementUtils()
.getTypeElement("msi.gama.common.interfaces.IVarAndActionSupport").asType();
}
return iVarAndActionSupport;
}

TypeMirror getIAgent() {
if (iAgent == null) {
iAgent = delegate.getElementUtils().getTypeElement("msi.gama.metamodel.agent.IAgent").asType();
Expand Down Expand Up @@ -172,8 +179,7 @@ public void emitError(final String s, final Element e) {
}

public void emit(final Kind kind, final String s, final Element e) {
if (!PRODUCES_WARNING)
return;
if (!PRODUCES_WARNING) return;
if (e == null) {
getMessager().printMessage(kind, s);
} else {
Expand Down Expand Up @@ -356,9 +362,7 @@ public List<Annotation> getUsefulAnnotationsOn(final Element e) {
final List<Annotation> result = new ArrayList<>();
for (final Class<? extends Annotation> clazz : processors.keySet()) {
final Annotation a = e.getAnnotation(clazz);
if (a != null) {
result.add(a);
}
if (a != null) { result.add(a); }
}
return result;
}
Expand Down
20 changes: 6 additions & 14 deletions msi.gama.processor/src/msi/gama/precompiler/VarsProcessor.java
Expand Up @@ -51,8 +51,8 @@ private void buildSettersAndGetters(final ProcessorContext context) {
public void createElement(final StringBuilder sb, final ProcessorContext context, final Element e,
final vars vars) {
final TypeMirror typeClass = e.asType();
final boolean isField = !context.getTypeUtils().isAssignable(typeClass, context.getISkill())
&& !context.getTypeUtils().isAssignable(typeClass, context.getIAgent());
// If the declaring class has nothing to do with IAgent or ISkill, then the variable is considered as a 'field'
final boolean isField = !context.getTypeUtils().isAssignable(typeClass, context.getIVarAndActionSupport());

for (final variable node : vars.value()) {
verifyDoc(context, e, "attribute " + node.name(), node);
Expand Down Expand Up @@ -138,9 +138,7 @@ private void writeHelpers(final StringBuilder sb, final ProcessorContext context
getterHelper = concat("(s,a,t,v)->t==null?", returnWhenNull(checkPrim(returns)), ":((", clazz,
")t).", method, "(", scope ? "s" : "", dynamic ? (scope ? "," : "") + "a)" : ")");
}
if (ex.getAnnotation(getter.class).initializer()) {
initerHelper = getterHelper;
}
if (ex.getAnnotation(getter.class).initializer()) { initerHelper = getterHelper; }
}
}

Expand All @@ -164,20 +162,14 @@ private void writeFacets(final StringBuilder sb, final variable s) {
for (int i = 0; i < dependencies.length; i++) {
final String string = dependencies[i];
depends += string;
if (i < dependencies.length - 1) {
depends += ",";
}
if (i < dependencies.length - 1) { depends += ","; }
}
depends += "]";
sb.append(',').append("\"depends_on\"").append(',').append(toJavaString(depends));
}
if (s.of() != 0) {
sb.append(',').append("\"of\"").append(',').append(toJavaString(String.valueOf(s.of())));
}
if (s.of() != 0) { sb.append(',').append("\"of\"").append(',').append(toJavaString(String.valueOf(s.of()))); }
final String init = s.init();
if (!"".equals(init)) {
sb.append(',').append("\"init\"").append(',').append(toJavaString(init));
}
if (!"".equals(init)) { sb.append(',').append("\"init\"").append(',').append(toJavaString(init)); }
sb.append(')');
}

Expand Down

0 comments on commit ba78e15

Please sign in to comment.