Before: runtime ale_linters/elm/make.vim After: unlet! g:config_error_lines call ale#linter#Reset() " Elm 0.19 Execute(The elm-make handler should parse Elm 0.19 general problems correctly): AssertEqual \ [ \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': "error details\n\nstyled details" \ } \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode({ \ 'type': 'error', \ 'path': ale#util#Tempname() . '/Module.elm', \ 'title': 'UNKNOWN IMPORT', \ 'message': ["error details\n\n", { 'string': 'styled details' }] \ }), \ ]) Execute(The elm-make handler should parse Elm 0.19 compilation errors correctly): AssertEqual \ [ \ { \ 'lnum': 404, \ 'col': 1, \ 'end_lnum': 408, \ 'end_col': 18, \ 'type': 'E', \ 'text': "error details 1\n\nstyled details" \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 407, \ 'end_col': 17, \ 'type': 'E', \ 'text': 'error details 2', \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 406, \ 'end_col': 93, \ 'type': 'E', \ 'text': 'error details 3', \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode({ \ 'type': 'compile-errors', \ 'errors': [ \ { \ 'path': ale#util#Tempname() . '/Module.elm', \ 'problems': [ \ { \ 'title': 'TYPE MISMATCH', \ 'message': ["error details 1\n\n", { 'string': 'styled details' }], \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } \ }, \ { \ 'title': 'TYPE MISMATCH', \ 'message': ['error details 2'], \ 'region': { 'start': {'line': 406, 'column': 5}, 'end': {'line': 407, 'column': 17 } } \ }, \ { \ 'title': 'TYPE MISMATCH', \ 'message': ['error details 3'], \ 'region': { 'start': { 'line': 406, 'column': 5}, 'end': {'line': 406, 'column': 93 } } \ } \ ] \ } \ ] \ }), \ ]) Execute(The elm-make handler should handle errors in Elm 0.19 imported modules): AssertEqual \ [ \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': "src/Module.elm - error details\n\nstyled details", \ 'detail': "src/Module.elm ----------\n\nerror details\n\nstyled details" \ }, \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': "Elm - error details\n\nstyled details", \ 'detail': "Elm ----------\n\nerror details\n\nstyled details" \ }, \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': "src/Module.elm:404 - error details\n\nstyled details", \ 'detail': "src/Module.elm:404 ----------\n\nerror details\n\nstyled details" \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode({ \ 'type': 'error', \ 'path': 'src/Module.elm', \ 'title': 'UNKNOWN IMPORT', \ 'message': ["error details\n\n", { 'string': 'styled details' }] \ }), \ json_encode({ \ 'type': 'error', \ 'path': v:null, \ 'title': 'UNKNOWN IMPORT', \ 'message': ["error details\n\n", { 'string': 'styled details' }] \ }), \ json_encode({ \ 'type': 'compile-errors', \ 'errors': [ \ { \ 'path': 'src/Module.elm', \ 'problems': [ \ { \ 'title': 'TYPE MISMATCH', \ 'message': ["error details\n\n", { 'string': 'styled details' }], \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } \ } \ ] \ } \ ] \ }), \ ]) " Elm 0.18 Execute(The elm-make handler should parse Elm 0.18 compilation errors correctly): AssertEqual \ [ \ { \ 'lnum': 33, \ 'col': 1, \ 'end_lnum': 33, \ 'end_col': 19, \ 'type': 'W', \ 'text': 'warning overview', \ 'detail': "warning overview\n\nwarning details", \ }, \ { \ 'lnum': 404, \ 'col': 1, \ 'end_lnum': 408, \ 'end_col': 18, \ 'type': 'E', \ 'text': 'error overview 1', \ 'detail': "error overview 1\n\nerror details 1", \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 407, \ 'end_col': 17, \ 'type': 'E', \ 'text': 'error overview 2', \ 'detail': "error overview 2\n\nerror details 2", \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 406, \ 'end_col': 93, \ 'type': 'E', \ 'text': 'error overview 3', \ 'detail': "error overview 3\n\nerror details 3", \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode([ \ { \ 'tag': 'unused import', \ 'overview': 'warning overview', \ 'details': 'warning details', \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, \ 'type': 'warning', \ 'file': ale#util#Tempname() . '/Module.elm', \ } \ ]), \ json_encode([ \ { \ 'tag': 'TYPE MISMATCH', \ 'overview': 'error overview 1', \ 'subregion': { 'start': { 'line': 406, 'column': 5 }, 'end': { 'line': 408, 'column': 18 } }, \ 'details': 'error details 1', \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } }, \ 'type': 'error', \ 'file': ale#util#Tempname() . '/Module.elm', \ }, \ { \ 'tag': 'TYPE MISMATCH', \ 'overview': 'error overview 2', \ 'subregion': { 'start': { 'line': 407, 'column': 12 }, 'end': { 'line': 407, 'column': 17 } }, \ 'details': 'error details 2', \ 'region': { 'start': { 'line': 406, 'column': 5}, 'end': { 'line': 407, 'column': 17 } }, \ 'type':'error', \ 'file': ale#util#Tempname() . '/Module.elm', \ }, \ { \ 'tag': 'TYPE MISMATCH', \ 'overview': 'error overview 3', \ 'subregion': { 'start': { 'line': 406, 'column': 88 }, 'end': { 'line': 406, 'column': 93 } }, \ 'details': 'error details 3', \ 'region': { 'start': { 'line': 406, 'column': 5 }, 'end': { 'line': 406, 'column': 93 } }, \ 'type':'error', \ 'file': ale#util#Tempname() . '/Module.elm', \ } \ ]), \ ]) Execute(The elm-make handler should handle errors in Elm 0.18 imported modules): AssertEqual \ [ \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': 'src/Module.elm:33 - error overview', \ 'detail': "src/Module.elm:33 ----------\n\nerror overview\n\nerror details" \ } \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode([ \ { \ 'tag': 'unused import', \ 'overview': 'warning overview', \ 'details': 'warning details', \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, \ 'type': 'warning', \ 'file': 'src/Module.elm', \ }, \ { \ 'tag': 'type error', \ 'overview': 'error overview', \ 'details': 'error details', \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, \ 'type': 'error', \ 'file': 'src/Module.elm', \ } \ ]), \ ]) " Generic Execute(The elm-make handler should put an error on the first line if a line cannot be parsed): AssertEqual \ [ \ { \ 'lnum': 404, \ 'col': 1, \ 'end_lnum': 408, \ 'end_col': 18, \ 'type': 'E', \ 'text': "error details 1\n\nstyled details" \ }, \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': 'Not JSON', \ 'detail': "Not JSON\nAlso not JSON", \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ json_encode({ \ 'type': 'compile-errors', \ 'errors': [ \ { \ 'path': ale#util#Tempname() . '/Module.elm', \ 'problems': [ \ { \ 'title': 'TYPE MISMATCH', \ 'message': ["error details 1\n\n", { 'string': 'styled details' }], \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } \ } \ ] \ } \ ] \ }), \ 'Not JSON', \ 'Also not JSON', \ ]) Execute(The elm-make handler should ignore success lines): AssertEqual \ [], \ ale_linters#elm#make#Handle(347, [ \ 'Successfully generated /dev/null', \ ])