Repository navigation
Import statement in interface block causes uncontrolled error #187
Copy link
Copy link
Open
Description
With this minimal example:
module class_myclass
implicit none
private
public myclass
type :: myclass
private
contains
procedure(my_func), deferred :: my_func
end type
interface
subroutine my_func(this)
! error happens when I start typing "myclass" here
import myclass
end subroutine
end interface
end moduleI get the following tracebacks in the VSCode output view when I start typing "myclass" after "import":
[Error - 08:15:27] Request textDocument/completion failed.
Message: 'list' object has no attribute 'only_list'
Code: -32603
[object Object]
error handling request {'jsonrpc': '2.0', 'id': 84, 'method': 'textDocument/completion', 'params': {'textDocument': {'uri': 'file:///c%3A/Users/palle/dev/fortran-object-metamodel/fomm_iterator.f90'}, 'position': {'line': 16, 'character': 20}, 'context': {'triggerKind': 1}}}
Traceback (most recent call last):
File "c:\python39\lib\site-packages\fortls\langserver.py", line 167, in handle
resp = handler(request)
File "c:\python39\lib\site-packages\fortls\langserver.py", line 551, in serve_autocomplete
line_context, context_info = get_line_context(line_prefix)
File "c:\python39\lib\site-packages\fortls\parse_fortran.py", line 144, in get_line_context
if len(test_match[1].only_list) > 0:
AttributeError: 'list' object has no attribute 'only_list'
[Error - 08:15:28] Request textDocument/completion failed.
Message: 'list' object has no attribute 'only_list'
Code: -32603
[object Object]
error handling request {'jsonrpc': '2.0', 'id': 86, 'method': 'textDocument/completion', 'params': {'textDocument': {'uri': 'file:///c%3A/Users/palle/dev/fortran-object-metamodel/fomm_iterator.f90'}, 'position': {'line': 16, 'character': 20}, 'context': {'triggerKind': 1}}}
Traceback (most recent call last):
File "c:\python39\lib\site-packages\fortls\langserver.py", line 167, in handle
resp = handler(request)
File "c:\python39\lib\site-packages\fortls\langserver.py", line 551, in serve_autocomplete
line_context, context_info = get_line_context(line_prefix)
File "c:\python39\lib\site-packages\fortls\parse_fortran.py", line 144, in get_line_context
if len(test_match[1].only_list) > 0:
AttributeError: 'list' object has no attribute 'only_list'
[Error - 08:15:29] Request textDocument/completion failed.
Message: 'list' object has no attribute 'only_list'
Code: -32603
[object Object]
error handling request {'jsonrpc': '2.0', 'id': 87, 'method': 'textDocument/completion', 'params': {'textDocument': {'uri': 'file:///c%3A/Users/palle/dev/fortran-object-metamodel/fomm_iterator.f90'}, 'position': {'line': 16, 'character': 22}, 'context': {'triggerKind': 1}}}
Traceback (most recent call last):
File "c:\python39\lib\site-packages\fortls\langserver.py", line 167, in handle
resp = handler(request)
File "c:\python39\lib\site-packages\fortls\langserver.py", line 551, in serve_autocomplete
line_context, context_info = get_line_context(line_prefix)
File "c:\python39\lib\site-packages\fortls\parse_fortran.py", line 144, in get_line_context
if len(test_match[1].only_list) > 0:
AttributeError: 'list' object has no attribute 'only_list'
[Error - 08:17:48] Request textDocument/completion failed.
Message: 'list' object has no attribute 'only_list'
Code: -32603
[object Object]
error handling request {'jsonrpc': '2.0', 'id': 170, 'method': 'textDocument/completion', 'params': {'textDocument': {'uri': 'file:///c%3A/Users/palle/dev/fortran-object-metamodel/myclass.f90'}, 'position': {'line': 14, 'character': 20}, 'context': {'triggerKind': 1}}}
Traceback (most recent call last):
File "c:\python39\lib\site-packages\fortls\langserver.py", line 167, in handle
resp = handler(request)
File "c:\python39\lib\site-packages\fortls\langserver.py", line 551, in serve_autocomplete
line_context, context_info = get_line_context(line_prefix)
File "c:\python39\lib\site-packages\fortls\parse_fortran.py", line 144, in get_line_context
if len(test_match[1].only_list) > 0:
AttributeError: 'list' object has no attribute 'only_list'
[Error - 08:17:56] Request textDocument/completion failed.
Message: 'list' object has no attribute 'only_list'
Code: -32603
[object Object]
error handling request {'jsonrpc': '2.0', 'id': 172, 'method': 'textDocument/completion', 'params': {'textDocument': {'uri': 'file:///c%3A/Users/palle/dev/fortran-object-metamodel/myclass.f90'}, 'position': {'line': 14, 'character': 22}, 'context': {'triggerKind': 1}}}
Traceback (most recent call last):
File "c:\python39\lib\site-packages\fortls\langserver.py", line 167, in handle
resp = handler(request)
File "c:\python39\lib\site-packages\fortls\langserver.py", line 551, in serve_autocomplete
line_context, context_info = get_line_context(line_prefix)
File "c:\python39\lib\site-packages\fortls\parse_fortran.py", line 144, in get_line_context
if len(test_match[1].only_list) > 0:
AttributeError: 'list' object has no attribute 'only_list'
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
gbogopolsky commentedon Jul 15, 2021
I notice the same on my side. Any idea about how to fix it?
gnikit commentedon Dec 21, 2021
@plevold Is the rest of the syntax for this example legal? Can I ignore the diagnostic and linting errors in
:: my_funcandthis?gnikit commentedon Dec 22, 2021
This has now been fixed in
fortlsv1.14.4 . The autocomplete suggestions are not "working" as expected i.e. the suggestions will not be limited to what was included with import. That will be fixed in a future release see: fortran-lang/fortls#8plevold commentedon Dec 22, 2021
The original example was missing the declaration of the
thisargument. Also strictly speaking the type should have been abstract since it has a deferred procedure. Here's an example that gfortran compiles with no complaints using-Wall:module class_myclass implicit none private public myclass type, abstract :: myclass private contains procedure(my_func), deferred :: my_func end type interface subroutine my_func(this) ! error happens when I start typing "myclass" here import myclass class(myclass), intent(in) :: this end subroutine end interface end moduleAwsome! Thanks a lot for the effort. This project is making Fortran development much more pleasant!
gnikit commentedon Dec 22, 2021
@plevold Thanks for the example code. I will try and sort out the autocomplete suggestions in the next few weeks.
Glad to see people using the new
fortlsJHenneberg commentedon Jan 3, 2022
@gnikit : You just need to be quite deep inside the fortran github bubble to find out about it. I updated my small guide (https://github.com/JHenneberg/Guide_VSCode-fortran) with your extension.