Skip to content

Commit 8e0e376

Browse files
committed
Correct type converters.
1 parent f35c335 commit 8e0e376

File tree

4 files changed

+14
-6
lines changed

4 files changed

+14
-6
lines changed

src/main/java/org/byteskript/skript/lang/syntax/generic/ConverterExpression.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
public class ConverterExpression extends SimpleExpression {
2323

2424
public ConverterExpression() {
25-
super(SkriptLangSpec.LIBRARY, StandardElements.EXPRESSION, "%Object% [parsed] as %Type%");
25+
super(SkriptLangSpec.LIBRARY, StandardElements.EXPRESSION, "%Object% [parsed] as a[n] %Type%");
2626
}
2727

2828
@Override
2929
public Pattern.Match match(String thing, Context context) {
30-
if (!thing.contains(" as ")) return null;
30+
if (!thing.contains(" as a")) return null;
3131
return super.match(thing, context);
3232
}
3333

src/main/java/org/byteskript/skript/runtime/Skript.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,8 @@ public <From, To> Converter<From, To> getConverter(Class<From> from, Class<To> t
293293
final Converter.Data data = new Converter.Data(from, to);
294294
if (converters.containsKey(data)) return (Converter<From, To>) converters.get(data);
295295
for (final Converter.Data found : converters.keySet()) {
296-
if (from.isAssignableFrom(found.from()) && to.isAssignableFrom(found.to()))
297-
return (Converter<From, To>) converters.get(data);
296+
if (found.from().isAssignableFrom(from) && found.to().isAssignableFrom(to))
297+
return (Converter<From, To>) converters.get(found);
298298
}
299299
return null;
300300
}

src/main/java/org/byteskript/skript/runtime/internal/ExtractedSyntaxCalls.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ private static Skript findInstance() {
3939

4040
public static Object convert(Object from, Object object) {
4141
if (!(object instanceof Class<?> to)) throw new ScriptRuntimeError("Object must be converted to a type.");
42-
if (from.getClass().isAssignableFrom(to)) return from;
42+
if (to.isAssignableFrom(from.getClass())) return to.cast(from);
4343
final Converter converter = findInstance().getConverter(from.getClass(), to);
4444
if (converter == null) return from;
4545
return converter.convert(from);

src/test/resources/conversion.bsk

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,13 @@
22
function test:
33
trigger:
44
set {thing} to "10"
5-
set {number} to {thing} as integer
5+
set {number} to {thing} as an integer
66
assert {number} is a number
7+
set {number} to {thing} as a number
8+
assert {number} is a number
9+
set {thing} to {number} as a string
10+
assert {thing} is a string
11+
set {thing} to "java.lang.Object" as a class
12+
assert {thing} is a class
13+
set {thing} to {thing} as a string
14+
assert {thing} is a string

0 commit comments

Comments
 (0)