Skip to content

Commit 61f73ae

Browse files
committed
refactor(parser): move FortranObj AST node
1 parent f763118 commit 61f73ae

File tree

2 files changed

+120
-115
lines changed

2 files changed

+120
-115
lines changed

fortls/objects.py

Lines changed: 1 addition & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
)
3939
from fortls.json_templates import diagnostic_json, location_json, range_json
4040
from fortls.jsonrpc import path_to_uri
41+
from fortls.parsers.internal.base import FortranObj
4142
from fortls.parsers.internal.use import Use
4243

4344

@@ -407,121 +408,6 @@ def build(self, file_obj):
407408
return diag
408409

409410

410-
# Fortran object classes
411-
class FortranObj:
412-
def __init__(self):
413-
self.vis: int = 0
414-
self.def_vis: int = 0
415-
self.doc_str: str = None
416-
self.parent = None
417-
self.eline: int = -1
418-
self.implicit_vars = None
419-
420-
def set_default_vis(self, new_vis: int):
421-
self.def_vis = new_vis
422-
423-
def set_visibility(self, new_vis: int):
424-
self.vis = new_vis
425-
426-
def set_parent(self, parent_obj):
427-
self.parent = parent_obj
428-
429-
def add_doc(self, doc_str: str):
430-
self.doc_str = doc_str
431-
432-
def update_fqsn(self, enc_scope=None):
433-
return None
434-
435-
def end(self, line_number: int):
436-
self.eline = line_number
437-
438-
def resolve_inherit(self, obj_tree, inherit_version):
439-
return None
440-
441-
def require_inherit(self):
442-
return False
443-
444-
def resolve_link(self, obj_tree):
445-
return None
446-
447-
def require_link(self):
448-
return False
449-
450-
def get_type(self, no_link=False):
451-
return BASE_TYPE_ID
452-
453-
def get_type_obj(self, obj_tree):
454-
return None
455-
456-
def get_desc(self):
457-
return "unknown"
458-
459-
def get_snippet(self, name_replace=None, drop_arg=-1):
460-
return None, None
461-
462-
def get_documentation(self):
463-
return self.doc_str
464-
465-
def get_hover(self, long=False, drop_arg=-1) -> tuple[str | None, str | None]:
466-
return None, None
467-
468-
def get_hover_md(self, long=False, drop_arg=-1) -> str:
469-
msg, docs = self.get_hover(long, drop_arg)
470-
return fortran_md(msg, docs)
471-
472-
def get_signature(self, drop_arg=-1):
473-
return None, None, None
474-
475-
def get_interface(self, name_replace=None, drop_arg=-1, change_strings=None):
476-
return None
477-
478-
def get_children(self, public_only=False):
479-
return []
480-
481-
def get_ancestors(self):
482-
return []
483-
484-
def get_diagnostics(self):
485-
return []
486-
487-
def get_implicit(self):
488-
if self.parent is None:
489-
return self.implicit_vars
490-
parent_implicit = self.parent.get_implicit()
491-
if (self.implicit_vars is not None) or (parent_implicit is None):
492-
return self.implicit_vars
493-
return parent_implicit
494-
495-
def get_actions(self, sline, eline):
496-
return None
497-
498-
def is_optional(self):
499-
return False
500-
501-
def is_mod_scope(self):
502-
return False
503-
504-
def is_callable(self):
505-
return False
506-
507-
def is_external_int(self):
508-
return False
509-
510-
def is_abstract(self):
511-
return False
512-
513-
def req_named_end(self):
514-
return False
515-
516-
def check_valid_parent(self):
517-
return True
518-
519-
def check_definition(self, obj_tree, known_types: dict = None, interface=False):
520-
if known_types is None:
521-
known_types = {}
522-
return None, known_types
523-
524-
525411
class Scope(FortranObj):
526412
def __init__(self, file_ast, line_number: int, name: str, keywords: list = None):
527413
super().__init__()

fortls/parsers/internal/base.py

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
from __future__ import annotations
2+
3+
from fortls.helper_functions import fortran_md
4+
from fortls.objects import BASE_TYPE_ID
5+
6+
7+
# Fortran object classes
8+
class FortranObj:
9+
def __init__(self):
10+
self.vis: int = 0
11+
self.def_vis: int = 0
12+
self.doc_str: str = None
13+
self.parent = None
14+
self.eline: int = -1
15+
self.implicit_vars = None
16+
17+
def set_default_vis(self, new_vis: int):
18+
self.def_vis = new_vis
19+
20+
def set_visibility(self, new_vis: int):
21+
self.vis = new_vis
22+
23+
def set_parent(self, parent_obj):
24+
self.parent = parent_obj
25+
26+
def add_doc(self, doc_str: str):
27+
self.doc_str = doc_str
28+
29+
def update_fqsn(self, enc_scope=None):
30+
return None
31+
32+
def end(self, line_number: int):
33+
self.eline = line_number
34+
35+
def resolve_inherit(self, obj_tree, inherit_version):
36+
return None
37+
38+
def require_inherit(self):
39+
return False
40+
41+
def resolve_link(self, obj_tree):
42+
return None
43+
44+
def require_link(self):
45+
return False
46+
47+
def get_type(self, no_link=False):
48+
return BASE_TYPE_ID
49+
50+
def get_type_obj(self, obj_tree):
51+
return None
52+
53+
def get_desc(self):
54+
return "unknown"
55+
56+
def get_snippet(self, name_replace=None, drop_arg=-1):
57+
return None, None
58+
59+
def get_documentation(self):
60+
return self.doc_str
61+
62+
def get_hover(self, long=False, drop_arg=-1) -> tuple[str | None, str | None]:
63+
return None, None
64+
65+
def get_hover_md(self, long=False, drop_arg=-1) -> str:
66+
msg, docs = self.get_hover(long, drop_arg)
67+
return fortran_md(msg, docs)
68+
69+
def get_signature(self, drop_arg=-1):
70+
return None, None, None
71+
72+
def get_interface(self, name_replace=None, drop_arg=-1, change_strings=None):
73+
return None
74+
75+
def get_children(self, public_only=False):
76+
return []
77+
78+
def get_ancestors(self):
79+
return []
80+
81+
def get_diagnostics(self):
82+
return []
83+
84+
def get_implicit(self):
85+
if self.parent is None:
86+
return self.implicit_vars
87+
parent_implicit = self.parent.get_implicit()
88+
if (self.implicit_vars is not None) or (parent_implicit is None):
89+
return self.implicit_vars
90+
return parent_implicit
91+
92+
def get_actions(self, sline, eline):
93+
return None
94+
95+
def is_optional(self):
96+
return False
97+
98+
def is_mod_scope(self):
99+
return False
100+
101+
def is_callable(self):
102+
return False
103+
104+
def is_external_int(self):
105+
return False
106+
107+
def is_abstract(self):
108+
return False
109+
110+
def req_named_end(self):
111+
return False
112+
113+
def check_valid_parent(self):
114+
return True
115+
116+
def check_definition(self, obj_tree, known_types: dict = None, interface=False):
117+
if known_types is None:
118+
known_types = {}
119+
return None, known_types

0 commit comments

Comments
 (0)