Слияние кода завершено, страница обновится автоматически
исходном коде
A. Программист использует тип Number
, а сообщение об ошибке — тип double
. Это неправильно!
B. Аналогичная ситуация с псевдонимами типа
C. Проверка грамматики должна выполняться для всех сообщений об ошибках компилятора!!!
Относительная проблема
В исходном коде нет типов double
или Double
!
class Base {
foo(): Number { return 5 }
}
class Derived extends Base {
foo(): number { return 5 }
}
TypeError: foo(): double в Derived не может переопределять foo(): Double в Base, так как тип возвращаемого значения при переопределении несовместим с другим типом возвращаемого значения. [prog.ets:5:5]
Есть B, но нет Base в строке 7
type B = Base
type D = Derived
class Base {
foo(): D { return new D }
}
class Derived extends B {
foo(): B { return new B } // Это строка 7
}
TypeError: foo(): Base в Derived не может переопределять foo(): Derived в Base, так как тип возвращаемого значения при переопределении несовместим с другим типом возвращаемого значения. [prog.ets:7:5]
number
должен называться number
псевдоним типа должен использоваться там, где он используется
запросить технического писателя проверить грамматическую корректность всех сообщений об ошибках компилятора
используйте ./out/bin/es2panda
для компиляции двух приведённых выше примеров.
Вход Перед тем как оставить комментарий