Fix class cast exception with ObjectSource

We were generating methods with the original object, rather than the
extra one.

Updated our tests to actually catch this. Unfortunately the only places
we use this interface is in HTTP responses and transferred files,
neither of which show up in the Lua-side tests.
This commit is contained in:
Jonathan Coates 2023-07-07 18:05:02 +01:00
parent d351bc33c6
commit 9ea7f45fa7
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06
2 changed files with 4 additions and 3 deletions

View File

@ -76,7 +76,7 @@ public boolean forEachMethod(Object object, TargetedConsumer<T> consumer) {
for (var extra : source.getExtra()) {
var extraMethods = getMethods(extra.getClass());
if (!extraMethods.isEmpty()) hasMethods = true;
for (var method : extraMethods) consumer.accept(object, method.name(), method.method(), method);
for (var method : extraMethods) consumer.accept(extra, method.name(), method.method(), method);
}
}

View File

@ -58,7 +58,7 @@ public void testDynamicPeripheral() {
@Test
public void testExtra() {
ComputerBootstrap.run("assert(extra.go, 'go')\nassert(extra.go2, 'go2')",
ComputerBootstrap.run("assert(extra.go() == nil, 'go')\nassert(extra.go2() == 456, 'go2')",
x -> x.addApi(new ExtraObject()),
50);
}
@ -163,7 +163,8 @@ public String[] getNames() {
}
@LuaFunction
public final void go2() {
public final int go2() {
return 456;
}
@Override