Skip to content

Commit e76f435

Browse files
committed
Issue fortran-lang#284 fix and extend hover of parameters.
Add division sign, allow spaces in values of parameters. Extend unittests with patameters variables
1 parent 8f11b57 commit e76f435

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

fortls/regex_patterns.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class FortranRegularExpressions:
9393
r"CONTIGUOUS)",
9494
I,
9595
)
96-
PARAMETER_VAL: Pattern = compile(r"\w*[\s\&]*=[\s\&]*([\w\.\*\-\+\\\'\"]*)", I)
96+
PARAMETER_VAL: Pattern = compile(r"\w*[\s\&]*=(([\s\&]*[\w\.\-\+\*\/\'\"])*)", I)
9797
TATTR_LIST: Pattern = compile(
9898
r"[ ]*,[ ]*(PUBLIC|PRIVATE|ABSTRACT|EXTENDS\(\w*\))", I
9999
)

test/test_server_hover.py

+67
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,73 @@ def test_hover_parameter():
7070
validate_hover(results, ref_results)
7171

7272

73+
def test_hover_parameter_eqnospace():
74+
"""Test that hover parameters display value correctly"""
75+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
76+
file_path = test_dir / "hover" / "parameters.f90"
77+
string += hover_req(file_path, 11, 28)
78+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
79+
assert errcode == 0
80+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_no_space = 123\n```"]
81+
validate_hover(results, ref_results)
82+
83+
84+
def test_hover_parameter_morespace():
85+
"""Test that hover parameters display value correctly"""
86+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
87+
file_path = test_dir / "hover" / "parameters.f90"
88+
string += hover_req(file_path, 12, 28)
89+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
90+
assert errcode == 0
91+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_more_space = 123\n```"]
92+
validate_hover(results, ref_results)
93+
94+
95+
def test_hover_parameter_var_sum():
96+
"""Test that hover parameters display value correctly with sum"""
97+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
98+
file_path = test_dir / "hover" / "parameters.f90"
99+
string += hover_req(file_path, 13, 28)
100+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
101+
assert errcode == 0
102+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_sum1 = 1 + 23\n```"]
103+
validate_hover(results, ref_results)
104+
105+
106+
def test_hover_parameter_var_neg():
107+
"""Test that hover parameters display value correctly with extraction"""
108+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
109+
file_path = test_dir / "hover" / "parameters.f90"
110+
string += hover_req(file_path, 14, 28)
111+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
112+
assert errcode == 0
113+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_ex1 = 1 - 23\n```"]
114+
validate_hover(results, ref_results)
115+
116+
117+
def test_hover_parameter_var_mul():
118+
"""Test that hover parameters display value correctly with
119+
multiplication and spaces"""
120+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
121+
file_path = test_dir / "hover" / "parameters.f90"
122+
string += hover_req(file_path, 15, 28)
123+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
124+
assert errcode == 0
125+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_mul1 = 1 * 23\n```"]
126+
validate_hover(results, ref_results)
127+
128+
129+
def test_hover_parameter_var_div():
130+
"""Test that hover parameters display value correctly with value of division"""
131+
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})
132+
file_path = test_dir / "hover" / "parameters.f90"
133+
string += hover_req(file_path, 16, 28)
134+
errcode, results = run_request(string, fortls_args=["--sort_keywords"])
135+
assert errcode == 0
136+
ref_results = ["```fortran90\nINTEGER, PARAMETER :: var_div1 = 1/1\n```"]
137+
validate_hover(results, ref_results)
138+
139+
73140
def test_hover_parameter_nested():
74141
"""Test that hover parameters using other parameter values works"""
75142
string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir)})

test/test_source/hover/parameters.f90

+6
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,10 @@ program params
99
logical(kind=8), parameter :: long_bool = .true.
1010
character(len=5), parameter :: sq_str = '12345'
1111
character(len=5), parameter :: dq_str = "12345"
12+
integer, parameter :: var_no_space=123
13+
integer, parameter :: var_more_space = 123
14+
integer, parameter :: var_sum1 = 1 + 23
15+
integer, parameter :: var_ex1 = 1 - 23
16+
integer, parameter :: var_mul1 = 1 * 23
17+
integer, parameter :: var_div1 = 1/1
1218
end program params

0 commit comments

Comments
 (0)