Skip to content

Commit 8e252ff

Browse files
committed
don't simplify lists into single literals
1 parent 8c8e3a7 commit 8e252ff

2 files changed

Lines changed: 3 additions & 25 deletions

File tree

src/main/java/ch/njol/skript/lang/ExpressionList.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import ch.njol.skript.classes.Changer.ChangeMode;
44
import ch.njol.skript.conditions.CondCompare;
55
import ch.njol.skript.lang.SkriptParser.ParseResult;
6-
import ch.njol.skript.lang.util.SimpleLiteral;
76
import ch.njol.skript.registrations.Classes;
87
import ch.njol.util.Kleenean;
98
import ch.njol.util.coll.CollectionUtils;
@@ -299,21 +298,13 @@ public List<Expression<? extends T>> getAllExpressions() {
299298
@SuppressWarnings("unchecked")
300299
public Expression<T> simplify() {
301300
boolean isLiteralList = true;
302-
boolean isSimpleList = true;
303301
for (int i = 0; i < expressions.length; i++) {
304302
expressions[i] = expressions[i].simplify();
305303
isLiteralList &= expressions[i] instanceof Literal;
306-
isSimpleList &= expressions[i].isSingle();
307-
}
308-
if (isLiteralList && isSimpleList) {
309-
T[] values = (T[]) Array.newInstance(returnType, expressions.length);
310-
for (int i = 0; i < values.length; i++)
311-
values[i] = ((Literal<? extends T>) expressions[i]).getSingle();
312-
return new SimpleLiteral<>(values, returnType, and, this);
313304
}
314305
if (isLiteralList) {
315306
Literal<? extends T>[] ls = Arrays.copyOf(expressions, expressions.length, Literal[].class);
316-
return new LiteralList<>(ls, returnType, and, this);
307+
return new LiteralList<>(ls, returnType, and);
317308
}
318309
return this;
319310
}

src/main/java/ch/njol/skript/lang/LiteralList.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package ch.njol.skript.lang;
22

3-
import ch.njol.skript.lang.util.SimpleLiteral;
43
import ch.njol.skript.registrations.Classes;
54
import org.jetbrains.annotations.Nullable;
65

7-
import java.lang.reflect.Array;
8-
96
/**
107
* A list of literals. Can contain {@link UnparsedLiteral}s.
118
*
@@ -21,11 +18,11 @@ public LiteralList(Literal<? extends T>[] literals, Class<T> returnType, Class<?
2118
super(literals, returnType, possibleReturnTypes, and);
2219
}
2320

24-
public LiteralList(Literal<? extends T>[] literals, Class<T> returnType, boolean and, ExpressionList<?> source) {
21+
public LiteralList(Literal<? extends T>[] literals, Class<T> returnType, boolean and, LiteralList<?> source) {
2522
super(literals, returnType, and, source);
2623
}
2724

28-
public LiteralList(Literal<? extends T>[] literals, Class<T> returnType, Class<?>[] possibleReturnTypes, boolean and, ExpressionList<?> source) {
25+
public LiteralList(Literal<? extends T>[] literals, Class<T> returnType, Class<?>[] possibleReturnTypes, boolean and, LiteralList<?> source) {
2926
super(literals, returnType, possibleReturnTypes, and, source);
3027
}
3128

@@ -63,17 +60,7 @@ public Literal<? extends T>[] getExpressions() {
6360
}
6461

6562
@Override
66-
@SuppressWarnings("unchecked")
6763
public Expression<T> simplify() {
68-
boolean isSimpleList = true;
69-
for (Expression<? extends T> expression : expressions)
70-
isSimpleList &= expression.isSingle();
71-
if (isSimpleList) {
72-
T[] values = (T[]) Array.newInstance(getReturnType(), expressions.length);
73-
for (int i = 0; i < values.length; i++)
74-
values[i] = ((Literal<? extends T>) expressions[i]).getSingle();
75-
return new SimpleLiteral<>(values, getReturnType(), and, this);
76-
}
7764
return this;
7865
}
7966

0 commit comments

Comments
 (0)