use of dyvilx.tools.compiler.ast.context.IContext in project Dyvil by Dyvil.
the class ExternalClass method resolveMetadata.
private void resolveMetadata() {
if ((this.resolved & METADATA) != 0) {
return;
}
this.resolved |= METADATA;
final IContext context = this.getCombiningContext();
this.metadata = IClass.getClassMetadata(this, this.attributes.flags());
this.metadata.resolveTypesHeader(null, context);
this.metadata.resolveTypesBody(null, context);
}
use of dyvilx.tools.compiler.ast.context.IContext in project Dyvil by Dyvil.
the class ExternalConstructor method resolveExceptions.
private void resolveExceptions() {
if (this.exceptions == null || (this.resolved & EXCEPTIONS) != 0) {
return;
}
this.resolved |= EXCEPTIONS;
final IContext context = this.getExternalContext();
this.exceptions.resolveTypes(null, context);
}
use of dyvilx.tools.compiler.ast.context.IContext in project Dyvil by Dyvil.
the class ClassUnit method resolveTypes.
@Override
public void resolveTypes() {
super.resolveTypes();
final IContext context = this.getContext();
for (int i = 0; i < this.classCount; i++) {
this.classes[i].resolveTypes(this.markers, context);
}
}
use of dyvilx.tools.compiler.ast.context.IContext in project Dyvil by Dyvil.
the class ClassUnit method resolve.
@Override
public void resolve() {
this.resolveImports();
final IContext context = this.getContext();
for (int i = 0; i < this.classCount; i++) {
this.classes[i].resolve(this.markers, context);
}
}
use of dyvilx.tools.compiler.ast.context.IContext in project Dyvil by Dyvil.
the class CompleteCommand method printCompletions.
private void printCompletions(DyvilREPL repl, String memberStart, IValue value) {
final IType type = value.getType();
final boolean statics = value.isClassAccess();
final IContext context = repl.getContext().getContext();
final Set<IField> fields = new TreeSet<>(MemberSorter.MEMBER_COMPARATOR);
final Set<IProperty> properties = new TreeSet<>(MemberSorter.MEMBER_COMPARATOR);
final Set<IMethod> methods = new TreeSet<>(MemberSorter.METHOD_COMPARATOR);
final Set<IMethod> extensionMethods = new TreeSet<>(MemberSorter.METHOD_COMPARATOR);
final Set<IMethod> conversionMethods = new TreeSet<>(MemberSorter.METHOD_COMPARATOR);
final PrintStream output = repl.getOutput();
if (statics) {
output.println(I18n.get("command.complete.type", type));
findMembers(type, fields, properties, methods, memberStart, true);
findExtensions(context, type, value, extensionMethods, memberStart, true);
} else {
output.println(I18n.get("command.complete.expression", value, type));
findInstanceMembers(type, fields, properties, methods, memberStart, new IdentityHashSet<>());
findExtensions(context, type, value, extensionMethods, memberStart, false);
findConversions(context, type, value, conversionMethods);
}
boolean hasOutput = false;
if (!fields.isEmpty()) {
hasOutput = true;
output.println(I18n.get("command.complete.fields"));
printMembers(output, fields, type);
}
if (!properties.isEmpty()) {
hasOutput = true;
output.println(I18n.get("command.complete.properties"));
printMembers(output, properties, type);
}
if (!methods.isEmpty()) {
hasOutput = true;
output.println(I18n.get("command.complete.methods"));
printMethods(output, methods, type);
}
if (!extensionMethods.isEmpty()) {
hasOutput = true;
output.println(I18n.get("command.complete.extensions"));
printMethods(output, extensionMethods, type);
}
if (!conversionMethods.isEmpty()) {
hasOutput = true;
output.println(I18n.get("command.complete.conversions"));
printMethods(output, conversionMethods, type);
}
if (!hasOutput) {
output.println(I18n.get("command.complete.none"));
}
}
Aggregations