mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-26 09:40:43 +00:00
Harman air - Null coalesce and nullish member access operators - WIP
This commit is contained in:
@@ -3352,7 +3352,8 @@ public class Graph {
|
||||
} else {
|
||||
ternarOnFalse = filteredOnFalse.get(0).value;
|
||||
}
|
||||
stack.push(new TernarOpItem(null, localData.lineStartInstruction, expr.invert(null), ternarOnTrue, ternarOnFalse));
|
||||
TernarOpItem top = new TernarOpItem(null, localData.lineStartInstruction, expr.invert(null), ternarOnTrue, ternarOnFalse);
|
||||
stack.push(handleTernar(top, localData));
|
||||
} else {
|
||||
boolean isIf = true;
|
||||
//If the ontrue is empty, switch ontrue and onfalse
|
||||
@@ -4292,4 +4293,14 @@ public class Graph {
|
||||
protected boolean partIsSwitch(GraphPart part) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces ternar with custom value
|
||||
* @param ternar Ternar
|
||||
* @param localData Local data
|
||||
* @return Custom item
|
||||
*/
|
||||
protected GraphTargetItem handleTernar(TernarOpItem ternar, BaseLocalData localData) {
|
||||
return ternar;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,13 +87,15 @@ public abstract class GraphTargetItem implements Serializable, Cloneable {
|
||||
|
||||
public static final int PRECEDENCE_LOGICALOR = 12;
|
||||
|
||||
public static final int PRECEDENCE_CONDITIONAL = 13;
|
||||
public static final int PRECEDENCE_NULLCOALESCE = 13;
|
||||
|
||||
public static final int PRECEDENCE_CONDITIONAL = 14;
|
||||
|
||||
public static final int PRECEDENCE_ASSIGNMENT = 14;
|
||||
public static final int PRECEDENCE_ASSIGNMENT = 15;
|
||||
|
||||
public static final int PRECEDENCE_COMMA = 15;
|
||||
public static final int PRECEDENCE_COMMA = 16;
|
||||
|
||||
public static final int NOPRECEDENCE = 16;
|
||||
public static final int NOPRECEDENCE = 17;
|
||||
|
||||
/**
|
||||
* Source item
|
||||
|
||||
@@ -85,6 +85,11 @@ public class LocalData {
|
||||
*/
|
||||
public ScriptExportMode exportMode;
|
||||
|
||||
/**
|
||||
* SWF version
|
||||
*/
|
||||
public int swfVersion;
|
||||
|
||||
/**
|
||||
* Creates a new local data
|
||||
*
|
||||
@@ -105,10 +110,11 @@ public class LocalData {
|
||||
* @param localRegNames Local register names
|
||||
* @param fullyQualifiedNames Fully qualified names
|
||||
* @param seenMethods Seen methods
|
||||
* @param exportMode
|
||||
* @param exportMode Export mode
|
||||
* @param swfVersion SWF version
|
||||
* @return Local data
|
||||
*/
|
||||
public static LocalData create(List<MethodBody> callStack, AbcIndexing abcIndex, ABC abc, HashMap<Integer, String> localRegNames, List<DottedChain> fullyQualifiedNames, Set<Integer> seenMethods, ScriptExportMode exportMode) {
|
||||
public static LocalData create(List<MethodBody> callStack, AbcIndexing abcIndex, ABC abc, HashMap<Integer, String> localRegNames, List<DottedChain> fullyQualifiedNames, Set<Integer> seenMethods, ScriptExportMode exportMode, int swfVersion) {
|
||||
LocalData localData = new LocalData();
|
||||
localData.abc = abc;
|
||||
localData.constantsAvm2 = abc.constants;
|
||||
@@ -118,6 +124,7 @@ public class LocalData {
|
||||
localData.abcIndex = abcIndex;
|
||||
localData.callStack = callStack;
|
||||
localData.exportMode = exportMode;
|
||||
localData.swfVersion = swfVersion;
|
||||
return localData;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user