|
3 | 3 | import copy
|
4 | 4 | import os
|
5 | 5 | import re
|
6 |
| -from dataclasses import dataclass |
7 |
| -from typing import Dict, List, NamedTuple, Pattern, Set |
| 6 | +from dataclasses import replace |
| 7 | +from typing import Pattern |
8 | 8 |
|
9 | 9 | from fortls.constants import (
|
10 | 10 | ASSOC_TYPE_ID,
|
|
25 | 25 | VAR_TYPE_ID,
|
26 | 26 | WHERE_TYPE_ID,
|
27 | 27 | FRegex,
|
| 28 | + USE_info, |
| 29 | + INCLUDE_info, |
28 | 30 | )
|
29 | 31 | from fortls.helper_functions import get_keywords, get_paren_substring, get_var_stack
|
30 | 32 | from fortls.jsonrpc import path_to_uri
|
31 | 33 |
|
32 |
| -# Helper types |
33 |
| -VAR_info = NamedTuple( |
34 |
| - "VAR_info", [("type_word", str), ("keywords", List[str]), ("var_names", List[str])] |
35 |
| -) |
36 |
| -SUB_info = NamedTuple( |
37 |
| - "SUB_info", |
38 |
| - [("name", str), ("args", str), ("mod_flag", bool), ("keywords", List[str])], |
39 |
| -) |
40 |
| -FUN_info = NamedTuple( |
41 |
| - "FUN_info", |
42 |
| - [ |
43 |
| - ("name", str), |
44 |
| - ("args", str), |
45 |
| - ("return_type", None), |
46 |
| - ("return_var", str), |
47 |
| - ("mod_flag", bool), |
48 |
| - ("keywords", List[str]), |
49 |
| - ], |
50 |
| -) |
51 |
| -SELECT_info = NamedTuple( |
52 |
| - "SELECT_info", [("type", int), ("binding", str), ("desc", str)] |
53 |
| -) |
54 |
| -CLASS_info = NamedTuple( |
55 |
| - "CLASS_info", [("name", str), ("parent", str), ("keywords", List[str])] |
56 |
| -) |
57 |
| -USE_info = NamedTuple( |
58 |
| - "USE_info", |
59 |
| - [("mod_name", str), ("only_list", Set[str]), ("rename_map", Dict[str, str])], |
60 |
| -) |
61 |
| -GEN_info = NamedTuple( |
62 |
| - "GEN_info", |
63 |
| - [("bound_name", str), ("pro_links", List[str]), ("vis_flag", int)], |
64 |
| -) |
65 |
| -SMOD_info = NamedTuple("SMOD_info", [("name", str), ("parent", str)]) |
66 |
| -INT_info = NamedTuple("INT_info", [("name", str), ("abstract", bool)]) |
67 |
| -VIS_info = NamedTuple("VIS_info", [("type", int), ("obj_names", List[str])]) |
68 |
| - |
69 |
| - |
70 |
| -@dataclass |
71 |
| -class INCLUDE_info: |
72 |
| - line_number: int |
73 |
| - path: str |
74 |
| - file: None # fortran_file |
75 |
| - scope_objs: list[str] |
76 |
| - |
77 | 34 |
|
78 | 35 | def get_use_tree(
|
79 | 36 | scope: fortran_scope,
|
80 |
| - use_dict: dict, |
| 37 | + use_dict: dict[str, USE_info], |
81 | 38 | obj_tree: dict,
|
82 |
| - only_list: list = None, |
83 |
| - rename_map: dict = None, |
84 |
| - curr_path: list = None, |
| 39 | + only_list: list[str] = None, |
| 40 | + rename_map: dict[str, str] = None, |
| 41 | + curr_path: list[str] = None, |
85 | 42 | ):
|
86 | 43 | def intersect_only(use_stmnt):
|
87 | 44 | tmp_list = []
|
@@ -135,8 +92,8 @@ def intersect_only(use_stmnt):
|
135 | 92 | only_len = len(use_dict_mod.only_list)
|
136 | 93 | new_rename = merged_rename.get(only_name, None)
|
137 | 94 | if new_rename is not None:
|
138 |
| - use_dict[use_stmnt.mod_name] = use_dict_mod._replace( |
139 |
| - rename_map=merged_rename |
| 95 | + use_dict[use_stmnt.mod_name] = replace( |
| 96 | + use_dict_mod, rename_map=merged_rename |
140 | 97 | )
|
141 | 98 | else:
|
142 | 99 | use_dict[use_stmnt.mod_name] = USE_info(use_stmnt.mod_name, set(), {})
|
|
0 commit comments