Closed aurusov closed 8 years ago
Паша, посмотри это место. Блочит переход на Неон.
Проблема в том, что метод createInjector()
принимает Module...
, т.е. varargs
. Джава воспринимает его как массив с произвольным числом элементов. Поэтому если передавать просто RaoRuntimeModule
, то он не может покастить массив RaoRuntimeModule
к массиву Module
(хоть и RaoRuntimeModule
к Module
кастится).
Тут камень в огород джавы, я думаю.
Теперь надо выяснить, почему генерится такой кривой код.
Тоже думал про кастинг к массиву. Но где-то в другом месте нашел аналогичную конструкцию, которая компилится. Или ошибаюсь, и подобного нет ?
Проверил в доках джавы, с массивами так действительно можно делать. https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
Example 5.2-3.
Point[] pvec = new Point[100];
ColoredPoint[] cpvec = new ColoredPoint[100];
pvec = cpvec; // okay
The value of cpvec can be assigned to pvec, because any reference that could be the value of an expression of type ColoredPoint can be the value of a variable of type Point.
В таком случае непонятно, почему с varargs
не получается. Пока разбираюсь.
UPD: подозреваю, что такой каст работает с переменными, но не будет работать с параметрами методов. По возможности проверю на простом примере.
Главное, не закопайся в этой задаче. Нам тут тесты восстановить надо. Для раскопок можно другую задачу создать.
Странно, вроде должно работать. Возможно, я неправильно понял ошибку. На простом примере все ок.
class Test {
private static void test1(Object[] args) {
}
private static void test2(Object... args) {
}
public static void main(String[] args) {
String s = new String("Hello1");
Object o = new String("Hello2");
// test1(s); //fails
// test1(o); //fails
test2(s); //ok
test2(o); //ok
}
}
Во-во, странно.
Кажется, что он не видит кастинг
Ведет себя очень странно, RaoRuntimeModule
нормально кастится к Module
(неявным кастом) в проекте, где он объявлен, но в проекте тестов почему-то не кастится. Разъехались какие-то зависимости, но какие именно пока мне неясно.
В качестве временного быстрого решения можно просто отключить генерацию файлов в tests/src-gen
, т.к. они на данный момент не используются.
Коммит выше.
Если ок, поставлю пул-реквест.
Да, давай отключим и всё.
Закрывать?
Да
Вышла новая версия Эклипса http://www.eclipse.org/downloads/packages/eclipse-ide-java-and-dsl-developers/neonr
В
ru.bmstu.rk9.rao.tests
ошибка в сгенеренном файле. Не знаю где именно ошибка, но он не может скастить RaoRuntimeModule -> Module. Нужно что-то типаили разбираться глубже. Вижу две ошибки
Само РДО собирается, запускается и работает.