Skip to content

Commit 5a6039d

Browse files
committed
Fixes STOP named_string #172
`stop` can now handle labels
1 parent e9763d3 commit 5a6039d

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

Diff for: CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
2929
([#204](https://github.com/krvajal/vscode-fortran-support/issues/204))
3030
- Fixes labelled conditionals erroneous highlighting when followed by whitespace
3131
([#205](https://github.com/krvajal/vscode-fortran-support/issues/205))
32+
- Fixes labelled `stop` conditions
33+
([#172](https://github.com/krvajal/vscode-fortran-support/issues/172))
3234

3335
### Added
3436

Diff for: syntaxes/fortran_free-form.tmLanguage.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -2291,10 +2291,13 @@
22912291
"stop-statement": {
22922292
"comment": "Introduced in the Fortran 1977 standard.",
22932293
"name": "meta.statement.control.stop.fortran",
2294-
"begin": "(?i)\\s*\\b(stop)\\b",
2294+
"begin": "(?i)\\s*\\b(stop)\\b(?:\\s*\\b([a-z]\\w*)\\b)?",
22952295
"beginCaptures": {
22962296
"1": {
22972297
"name": "keyword.control.stop.fortran"
2298+
},
2299+
"2": {
2300+
"name": "meta.label.stop"
22982301
}
22992302
},
23002303
"end": "(?=[;!\\n])",

Diff for: test/resources/conditionals.f90

+6-1
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@
3838
end if label5 !
3939
else
4040
! whitespace in the "end if label5 " causes else to be incorrect
41-
end if
41+
end if
42+
43+
! stop
44+
if (1) stop
45+
if (1) stop label6
46+
if (1) stop "label"//"7"

Diff for: test/resources/conditionals.f90.snap

+39-1
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,42 @@
219219
#^ source.fortran.free meta.block.if.fortran comment.line.fortran
220220
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.block.if.fortran comment.line.fortran
221221
>end if
222-
#^^^^^^ source.fortran.free keyword.control.endif.fortran
222+
#^^^^^^ source.fortran.free keyword.control.endif.fortran
223+
>
224+
>! stop
225+
#^ source.fortran.free comment.line.fortran
226+
# ^^^^^ source.fortran.free comment.line.fortran
227+
>if (1) stop
228+
#^^ source.fortran.free keyword.control.if.fortran
229+
# ^ source.fortran.free meta.expression.control.logical.fortran
230+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran
231+
# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran
232+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran
233+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran
234+
# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran
235+
>if (1) stop label6
236+
#^^ source.fortran.free keyword.control.if.fortran
237+
# ^ source.fortran.free meta.expression.control.logical.fortran
238+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran
239+
# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran
240+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran
241+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran
242+
# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran
243+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran
244+
# ^^^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran meta.label.stop
245+
>if (1) stop "label"//"7"
246+
#^^ source.fortran.free keyword.control.if.fortran
247+
# ^ source.fortran.free meta.expression.control.logical.fortran
248+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran
249+
# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran
250+
# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran
251+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran
252+
# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran
253+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran
254+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran
255+
# ^^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran
256+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran
257+
# ^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.other.concatination.fortran
258+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran
259+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran
260+
# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran

0 commit comments

Comments
 (0)