Skip to content

Commit 261fe92

Browse files
initial (very broken) ParamSyntheticFieldProposalService implementation
1 parent fc784a4 commit 261fe92

8 files changed

Lines changed: 468 additions & 96 deletions

enigma/src/main/java/org/quiltmc/enigma/api/analysis/EntryReference.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.quiltmc.enigma.api.translation.representation.entry.ClassEntry;
1111
import org.quiltmc.enigma.api.translation.representation.entry.Entry;
1212
import org.quiltmc.enigma.api.translation.representation.entry.FieldEntry;
13+
import org.quiltmc.enigma.api.translation.representation.entry.LocalVariableEntry;
1314
import org.quiltmc.enigma.api.translation.representation.entry.MethodEntry;
1415
import org.quiltmc.enigma.impl.EnigmaProjectImpl;
1516

@@ -96,6 +97,14 @@ public Entry<?> getNameableEntry(EnigmaProject project) {
9697
return definiteComponent;
9798
}
9899
}
100+
} else if (this.entry instanceof FieldEntry field) {
101+
final LocalVariableEntry linkedParam = ((EnigmaProjectImpl) project).getParamSyntheticFieldIndexingService()
102+
.map(service -> service.getLinkedParam(field))
103+
.orElse(null);
104+
105+
if (linkedParam != null) {
106+
return linkedParam;
107+
}
99108
}
100109

101110
return this.entry;

enigma/src/main/java/org/quiltmc/enigma/impl/EnigmaProjectImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.quiltmc.enigma.api.translation.representation.entry.MethodEntry;
3939
import org.quiltmc.enigma.impl.bytecode.translator.TranslationClassVisitor;
4040
import org.quiltmc.enigma.impl.plugin.EnumConstantIndexingService;
41+
import org.quiltmc.enigma.impl.plugin.ParamSyntheticFieldIndexingService;
4142
import org.quiltmc.enigma.impl.plugin.RecordIndexingService;
4243
import org.quiltmc.enigma.impl.translation.mapping.MappingsChecker;
4344
import org.quiltmc.enigma.util.I18n;
@@ -309,6 +310,12 @@ public Optional<RecordIndexingService> getRecordIndexingService() {
309310
.map(service -> (RecordIndexingService) service);
310311
}
311312

313+
public Optional<ParamSyntheticFieldIndexingService> getParamSyntheticFieldIndexingService() {
314+
return this.getEnigma()
315+
.getService(JarIndexerService.TYPE, ParamSyntheticFieldIndexingService.ID)
316+
.map(service -> (ParamSyntheticFieldIndexingService) service);
317+
}
318+
312319
private static boolean isEnumValueOfMethod(ClassDefEntry parent, MethodEntry method) {
313320
return parent != null && parent.isEnum() && method.getName().equals("valueOf") && method.getDesc().toString().equals("(Ljava/lang/String;)L" + parent.getFullName() + ";");
314321
}

0 commit comments

Comments
 (0)