mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 08:14:09 -08:00
Remove toString implementation from Kotlin lambda base class since it uses unsupported reflection API
This commit is contained in:
parent
575ec4a415
commit
6a196c2f32
|
@ -109,6 +109,7 @@ public class JCLPlugin implements TeaVMPlugin {
|
||||||
|
|
||||||
if (!isBootstrap()) {
|
if (!isBootstrap()) {
|
||||||
host.add(new ScalaHacks());
|
host.add(new ScalaHacks());
|
||||||
|
host.add(new KotlinHacks());
|
||||||
}
|
}
|
||||||
|
|
||||||
host.add(new NumericClassTransformer());
|
host.add(new NumericClassTransformer());
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2019 Alexey Andreev.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.teavm.classlib.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.teavm.model.ClassHolder;
|
||||||
|
import org.teavm.model.ClassHolderTransformer;
|
||||||
|
import org.teavm.model.ClassHolderTransformerContext;
|
||||||
|
import org.teavm.model.MethodHolder;
|
||||||
|
|
||||||
|
public class KotlinHacks implements ClassHolderTransformer {
|
||||||
|
@Override
|
||||||
|
public void transformClass(ClassHolder cls, ClassHolderTransformerContext context) {
|
||||||
|
if (cls.getName().equals("kotlin.jvm.internal.Lambda")) {
|
||||||
|
List<MethodHolder> methodsToRemove = new ArrayList<>();
|
||||||
|
for (MethodHolder method : cls.getMethods()) {
|
||||||
|
if (method.getName().equals("toString")) {
|
||||||
|
methodsToRemove.add(method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (MethodHolder method : methodsToRemove) {
|
||||||
|
cls.removeMethod(method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user