Skip to content

Commit 4fe5f46

Browse files
committed
Change include_dirs from a list to a set
1 parent e0fb5e3 commit 4fe5f46

File tree

6 files changed

+18
-16
lines changed

6 files changed

+18
-16
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
### Changed
1010

1111
- Changed `USE_info` named tuple to storing use modules as `sets` instead of `lists`
12+
- Changed `include_dirs` from a `list` to a `set`
1213

1314
### Fixed
1415

fortls/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ def debug_server_parser(args):
461461
# Get preprocessor definitions from config file
462462
pp_suffixes = None
463463
pp_defs = {}
464-
include_dirs = []
464+
include_dirs = set()
465465
if args.debug_rootpath:
466466
config_path = os.path.join(args.debug_rootpath, args.config)
467467
config_exists = os.path.isfile(config_path)
@@ -471,9 +471,9 @@ def debug_server_parser(args):
471471
config_dict = json.load(fhandle)
472472
pp_suffixes = config_dict.get("pp_suffixes", None)
473473
pp_defs = config_dict.get("pp_defs", {})
474-
include_dirs = []
475-
for path in config_dict.get("include_dirs", []):
476-
include_dirs.extend(
474+
include_dirs = set()
475+
for path in config_dict.get("include_dirs", set()):
476+
include_dirs.update(
477477
only_dirs(resolve_globs(path, args.debug_rootpath))
478478
)
479479

fortls/interface.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,8 @@ def commandline_args(name: str = "fortls") -> argparse.ArgumentParser:
219219
# "--pp_include_dirs", # TODO: make main
220220
type=str,
221221
nargs="*",
222-
default=list(),
222+
default=set(),
223+
action=SetAction,
223224
metavar="DIRS",
224225
help="Folders containing preprocessor files with extensions PP_SUFFIXES.",
225226
)

fortls/langserver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1548,8 +1548,8 @@ def __load_config_file_preproc(self, config_dict: dict) -> None:
15481548
if isinstance(self.pp_defs, list):
15491549
self.pp_defs = {key: "" for key in self.pp_defs}
15501550

1551-
for path in config_dict.get("include_dirs", []):
1552-
self.include_dirs.extend(
1551+
for path in config_dict.get("include_dirs", set()):
1552+
self.include_dirs.update(
15531553
only_dirs(resolve_globs(path, self.root_path), self.post_messages)
15541554
)
15551555

fortls/parse_fortran.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,12 +1101,12 @@ def find_word_in_code_line(
11011101
return line_number, i0, i1
11021102

11031103
def preprocess(
1104-
self, pp_defs: dict = None, include_dirs: list = None, debug: bool = False
1104+
self, pp_defs: dict = None, include_dirs: set = None, debug: bool = False
11051105
) -> tuple[list, list]:
11061106
if pp_defs is None:
11071107
pp_defs = {}
11081108
if include_dirs is None:
1109-
include_dirs = []
1109+
include_dirs = set()
11101110

11111111
self.contents_pp, pp_skips, pp_defines, self.pp_defs = preprocess_file(
11121112
self.contents_split,
@@ -1173,7 +1173,7 @@ def preprocess_file(
11731173
contents_split: list,
11741174
file_path: str = None,
11751175
pp_defs: dict = None,
1176-
include_dirs: list = None,
1176+
include_dirs: set = None,
11771177
debug: bool = False,
11781178
):
11791179
# Look for and mark excluded preprocessor paths in file
@@ -1231,9 +1231,9 @@ def replace_vars(line: str):
12311231
if pp_defs is None:
12321232
pp_defs = {}
12331233
if include_dirs is None:
1234-
include_dirs = []
1234+
include_dirs = set()
12351235
if file_path is not None:
1236-
include_dirs = [os.path.dirname(file_path)] + include_dirs
1236+
include_dirs.add(os.path.abspath(os.path.dirname(file_path)))
12371237
pp_skips = []
12381238
pp_defines = []
12391239
pp_stack = []
@@ -1397,7 +1397,7 @@ def process_file(
13971397
file_obj: fortran_file,
13981398
debug: bool = False,
13991399
pp_defs: dict = None,
1400-
include_dirs: list = None,
1400+
include_dirs: set = None,
14011401
):
14021402
"""Build file AST by parsing file"""
14031403

@@ -1407,7 +1407,7 @@ def parser_debug_msg(msg: str, line: str, ln: int):
14071407
if pp_defs is None:
14081408
pp_defs = {}
14091409
if include_dirs is None:
1410-
include_dirs = []
1410+
include_dirs = set()
14111411
# Configure the parser logger
14121412
if debug:
14131413
logging.basicConfig(

test/test_interface.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def test_command_line_preprocessor_options():
6868
' {"HAVE_PETSC":"","HAVE_ZOLTAN":"","Mat":"type(tMat)"}'.split()
6969
)
7070
assert args.pp_suffixes == [".h", ".fh"]
71-
assert args.include_dirs == ["/usr/include/**", "./local/incl"]
71+
assert args.include_dirs == set(["/usr/include/**", "./local/incl"])
7272
assert args.pp_defs == {"HAVE_PETSC": "", "HAVE_ZOLTAN": "", "Mat": "type(tMat)"}
7373

7474

@@ -145,7 +145,7 @@ def test_config_file_preprocessor_options():
145145
server, root = unittest_server_init()
146146
# Preprocessor options
147147
assert server.pp_suffixes == [".h", ".fh"]
148-
assert server.include_dirs == [f"{root}/include"]
148+
assert server.include_dirs == set([f"{root}/include"])
149149
assert server.pp_defs == {
150150
"HAVE_PETSC": "",
151151
"HAVE_ZOLTAN": "",

0 commit comments

Comments
 (0)