impworks / lens

Language for Embeddable .NET Scripting
MIT License
91 stars 9 forks source link

Улучшить отображение ошибок #126

Closed impworks closed 11 years ago

impworks commented 11 years ago

В данном тикете буду собирать различные примеры кода, в которых выдается неполное или неадекватное сообщение об ошибке.

impworks commented 11 years ago
fun x:int -> true

:white_check_mark: Не отображается расположение ошибки.

impworks commented 11 years ago
fun x:int (x y) -> a

:white_check_mark: Следует отображать сообщение о некорректном формате аргументов.

impworks commented 11 years ago
1 2

:white_check_mark: Следует переписать сообщение на более человекопонятное.

impworks commented 11 years ago
if 1 then omg

:white_check_mark: Вообще не ругается, несмотря на неизвестную переменную.

impworks commented 11 years ago
while 1 do 1

:white_check_mark: Сообщение неадекватное, местоположения вообще нет.

impworks commented 11 years ago
while if true then true else false do 1

:white_check_mark: NullReferenceException.

impworks commented 11 years ago
Enumerable::Range 1 10
|> Test

:white_check_mark: Следует писать сообщение о необходимом отступе.

impworks commented 11 years ago
Enumerable::Range 1 10
    |> Test 1

Следует выделять только название метода.

impworks commented 11 years ago
let x = 1
let x = 2
x + b

:white_check_mark: Нет сообщения о location.

impworks commented 11 years ago
fmt "test" (ref 1)

:white_check_mark: Переписать сообщение.

impworks commented 11 years ago
let x = 1
fmt "test" ref x

Сообщение "съехало" на 1 символ назад.

impworks commented 11 years ago
let a = new [1; 2; 3]
a[1][1] = 2

:white_check_mark: Не показывается положение ошибки.

impworks commented 11 years ago
let a = new [1; 2; 3]
(a[1] + 1) = 2

:white_check_mark: Некорретное сообщение.

impworks commented 11 years ago
1.GetHashCode = 1

:white_check_mark: Некорректное сообщение.

impworks commented 11 years ago
new [
1]

:white_check_mark: Некорректное сообщение.

impworks commented 11 years ago
let fx1 = x:int ->
    let fx2 = x:int ->
        x + 1
    fx2 1

:white_check_mark: Не показывается местоположение ошибки.

impworks commented 11 years ago
for x in 1 do test

:white_check_mark: NullReferenceException.

impworks commented 11 years ago
fun inc (x:ref int) -> x = x + 1
var data = new { "a" => 1 }
inc ref data["a"]

:white_check_mark: Должна быть ошибка получения адреса, а показывается NullReferenceException.

impworks commented 11 years ago
(1 + 2) && (3 + 4)

:white_check_mark: Не выделяются крайние скобки. Выдается RuntimeBinderException со своим сообщением.

impworks commented 11 years ago
int::TryParse "1"

:white_check_mark: В сообщении говорится о "методе-расширении". В контексте статических типов не следует его упоминать.