migrated to gitea
All checks were successful
CI / build (push) Successful in 48s

This commit is contained in:
2024-04-04 08:39:31 +08:00
parent c4ccec0fc3
commit 19162b5b97
18 changed files with 125 additions and 42 deletions

View File

@@ -25,7 +25,8 @@ public class CompositeObjectValue implements ObjectValue {
ObjectValue result = ObjectValue.newInstance(cfg);
List<ValueIdentity> identities = new ArrayList<>();
for (Value element : elements) {
if (element instanceof CompositeObjectValue compositeObjectValue) {
if (element instanceof CompositeObjectValue) {
CompositeObjectValue compositeObjectValue = (CompositeObjectValue) element;
boolean differenceFound = false;
for (int i = 0; i < compositeObjectValue.elements.size(); i++) {
ObjectValue objectValue = (ObjectValue) compositeObjectValue.elements.get(i);

View File

@@ -89,9 +89,11 @@ class ListenerImpl implements WCFGListener {
if (value == null) {
List<ObjectValue> objects = elements.stream()
.map(it -> {
if (it instanceof ObjectValue ov)
if (it instanceof ObjectValue) {
ObjectValue ov = (ObjectValue) it;
return ov;
else if (it instanceof ValueHolder vh) {
} else if (it instanceof ValueHolder) {
ValueHolder vh = (ValueHolder) it;
return (ObjectValue) vh.getDelegate();
} else {
throw newThrowable(RuntimeException.class, "");
@@ -108,32 +110,39 @@ class ListenerImpl implements WCFGListener {
private void add2Last(Value value) {
StackLevel last = tail(stack);
if (last instanceof ArrayStackLevel asl) {
if (last instanceof ArrayStackLevel) {
ArrayStackLevel asl = (ArrayStackLevel) last;
asl.value.add(value);
if (value instanceof ValueHolder holder) {
if (value instanceof ValueHolder) {
ValueHolder holder = (ValueHolder) value;
Value arrayValue = asl.getValue();
int index = arrayValue.size() - 1;
holder.addDeleter(() -> arrayValue.set(index, holder.getDelegate()));
}
} else if (last instanceof ObjectStackLevel osl) {
} else if (last instanceof ObjectStackLevel) {
ObjectStackLevel osl = (ObjectStackLevel) last;
String key = osl.currentKey;
Value objectValue = osl.getValue();
objectValue.put(key, value);
if (value instanceof ValueHolder holder) {
if (value instanceof ValueHolder) {
ValueHolder holder = (ValueHolder) value;
holder.addDeleter(() -> {
objectValue.put(key, holder.getDelegate());
});
}
} else if (last instanceof ExpressionStackLevel esl) {
} else if (last instanceof ExpressionStackLevel) {
ExpressionStackLevel esl = (ExpressionStackLevel) last;
List<Value> values = esl.elements;
int index = values.size();
values.add(value);
if (value instanceof ValueHolder holder) {
if (value instanceof ValueHolder) {
ValueHolder holder = (ValueHolder) value;
holder.addDeleter(() -> {
values.set(index, holder.getDelegate());
});
}
} else if (last instanceof ExportStackLevel esl) {
} else if (last instanceof ExportStackLevel) {
ExportStackLevel esl = (ExportStackLevel) last;
esl.setValue(value);
}
}
@@ -320,7 +329,8 @@ class ListenerImpl implements WCFGListener {
@Override
public void exitExport(WCFGParser.ExportContext ctx) {
result = pop().getValue();
if (result instanceof ValueHolder holder) {
if (result instanceof ValueHolder) {
ValueHolder holder = (ValueHolder) result;
holder.addDeleter(() -> {
result = holder.getDelegate();
});