diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 00000000..3e53ae86 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,17 @@ +on: [push] +jobs: + grammar: + runs-on: ubuntu-20.04 + strategy: + matrix: + node-version: [12.x] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: yarn install + - run: yarn test:grammar + + \ No newline at end of file diff --git a/package.json b/package.json index f5885259..7ba4340f 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "CODE_TESTS_WORKSPACE='./' node ./node_modules/vscode/bin/test", + "test:grammar": "vscode-tmgrammar-snap -s source.fortran.free -g ./syntaxes/fortran_free-form.tmLanguage.json -t \"./test/resources/*.f90\"", "lint": "node ./node_modules/tslint/bin/tslint ./src/**/*.ts " }, "devDependencies": { @@ -194,7 +195,8 @@ "remap-istanbul": "^0.8.4", "tslint": "^4.0.2", "typescript": "^3.5.1", - "vscode": "^1.1.37" + "vscode": "^1.1.37", + "vscode-tmgrammar-test": "^0.0.11" }, "husky": { "hooks": { diff --git a/test/resources/class.f90.snap b/test/resources/class.f90.snap new file mode 100644 index 00000000..5f88469b --- /dev/null +++ b/test/resources/class.f90.snap @@ -0,0 +1,239 @@ +>module main +#^^^^^^ source.fortran.free meta.module.fortran keyword.other.program.fortran +# ^ source.fortran.free meta.module.fortran +# ^^^^ source.fortran.free meta.module.fortran entity.name.class.module.fortran +> +> use iso_fortran_env, only: real64 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran keyword.control.use.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran entity.name.class.module.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran keyword.control.only.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.use.fortran meta.parameter.fortran +> implicit none +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> private +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.statement.attribute-specification.fortran storage.modifier.private.fortran +> +> type, public :: test_t +#^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran storage.modifier.public.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> real(real64) :: a, b +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.left.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> contains +#^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran keyword.control.contains.fortran +> procedure, private :: init_sub +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran storage.type.procedure.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.fortran meta.something.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.fortran meta.something.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.fortran meta.something.fortran storage.modifier.private.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.fortran meta.something.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.name-list.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.name-list.fortran entity.name.function.procedure.fortran +> generic :: init => init_sub +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran storage.type.procedure.generic.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran entity.name.function.procedure.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.name-list.fortran entity.name.function.procedure.fortran +> end type test_t +#^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> type :: node +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> private +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.statement.attribute-specification.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.statement.attribute-specification.fortran storage.modifier.private.fortran +> type(node), pointer :: next => null() +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran support.function.intrinsic.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran punctuation.parentheses.right.fortran +> class(*), allocatable :: item +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.allocatable.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> contains +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran keyword.control.contains.fortran +> final :: node_finalizer +#^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran storage.type.final-procedure.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran meta.attribute-list.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran entity.name.function.procedure.fortran +> +> end type node +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> contains +#^^ source.fortran.free meta.module.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran keyword.control.contains.fortran +> +> subroutine init_sub(this, a, b) +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.begin.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.end.fortran +> +> class( test_t ) :: this +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran meta.type-spec.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> real(real64),intent(in) :: a, b +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.left.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.intent.in.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> this%a = a +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +> this%b = b +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.parameter.fortran +> +> end subroutine init_sub +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +> subroutine node_finalizer(a) +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.end.fortran +> type(node) :: a +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> end subroutine node_finalizer +#^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +>end module main +#^^^^^^^^^^ source.fortran.free meta.module.fortran keyword.other.endmodule.fortran +# ^ source.fortran.free meta.module.fortran +# ^^^^ source.fortran.free meta.module.fortran entity.name.class.module.fortran \ No newline at end of file diff --git a/test/resources/sample.f90.snap b/test/resources/sample.f90.snap new file mode 100644 index 00000000..8c9ca1ff --- /dev/null +++ b/test/resources/sample.f90.snap @@ -0,0 +1,60 @@ +>program main +#^^^^^^^ source.fortran.free meta.program.fortran keyword.control.program.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran +> ! execution +#^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran +> +> call say_hello() +#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.right.fortran +> +>contains +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran keyword.control.contains.fortran +> +> subroutine say_hello(a,b) +#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.end.fortran +> integer :: a,b +#^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> print *, "Hello, World!" +#^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end subroutine say_hello +#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +> +>end program main +#^^^^^^^^^^^ source.fortran.free meta.program.fortran keyword.control.endprogram.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran \ No newline at end of file diff --git a/test/resources/select_case.f90.snap b/test/resources/select_case.f90.snap new file mode 100644 index 00000000..80589b7d --- /dev/null +++ b/test/resources/select_case.f90.snap @@ -0,0 +1,177 @@ +> +>! ------------------------------------------------------------------------------ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! +#^ source.fortran.free comment.line.fortran +>! Tests the syntax highlighting of nested case select constructs is correct +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>!------------------------------------------------------------------------------- +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +> +>program select_case_test +#^^^^^^^ source.fortran.free meta.program.fortran keyword.control.program.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran +> implicit none +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> integer :: i, j, k +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> +> select case(i) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> case(1) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> select case(j) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> case(1) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> case(2) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> case default +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.default.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.endselect.fortran +> +> case(2) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> select case(k) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> case(1) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> case(2) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.right.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> case default +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.default.fortran +> print*, i, j +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.endselect.fortran +> +> case default +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.default.fortran +> print*, i, j +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran meta.parameter.fortran +> end select +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.case.fortran keyword.control.endselect.fortran +> +>end program select_case_test +#^^^^^^^^^^^ source.fortran.free meta.program.fortran keyword.control.endprogram.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran \ No newline at end of file diff --git a/test/resources/select_rank.f90.snap b/test/resources/select_rank.f90.snap new file mode 100644 index 00000000..c078b673 --- /dev/null +++ b/test/resources/select_rank.f90.snap @@ -0,0 +1,539 @@ +> +> +>! ------------------------------------------------------------------------------ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! +#^ source.fortran.free comment.line.fortran +>! Tests the syntax highlighting of nested rank select constructs is correct +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! @note requires GCC 10.0+ to compile or ifort 2019.1+ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>!------------------------------------------------------------------------------- +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +> +>program select_rank_test +#^^^^^^^ source.fortran.free meta.program.fortran keyword.control.program.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran +> implicit none +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> real, dimension(2, 2) :: a, b +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.dimension.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> a = -666.0; b = -666.0 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran constant.numeric.fortran +> call initialize(a) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.right.fortran +> call nested_initialise(a, b) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.control.call.fortran punctuation.parentheses.right.fortran +> +> print*, a +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +> print*, b +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +> +> contains +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran keyword.control.contains.fortran +> +> subroutine initialize (arg) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.begin.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.end.fortran +> real :: arg(..) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +> select rank (arg) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> rank (0) ! scalar +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran comment.line.fortran +> arg = 0.0 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (1) +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg(:) = 0.0 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (2) +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg(:, :) = 0.0 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank default +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.default.fortran +> print *, "Subroutine initialize called with unexpected rank argument" +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.endselect.fortran +> return +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.statement.control.return.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.statement.control.return.fortran keyword.control.return.fortran +> end subroutine +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +> +> subroutine nested_initialise(arg1, arg2) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.begin.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran punctuation.definition.parameters.end.fortran +> !< @note this is meant to test the syntax highlighting, nothing else! +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran comment.line.fortran +> real :: arg1(..), arg2(..) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +> select rank (arg1) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> rank (0) ! scalar +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran comment.line.fortran +> arg1 = 0.0 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> select rank (arg2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> rank (0) ! scalar +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +> arg2 = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (1) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:, :) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank default +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.default.fortran +> print *, "Subroutine initialize called with unexpected rank argument" +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.endselect.fortran +> rank (1) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg1(:) = 0.0 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> select rank (arg2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> rank (0) ! scalar +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +> arg2 = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (1) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:, :) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank default +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.default.fortran +> print *, "Subroutine initialize called with unexpected rank argument" +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.endselect.fortran +> rank (2) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg1(:, :) = 0.0 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran constant.numeric.fortran +> select rank (arg2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> rank (0) ! scalar +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +> arg2 = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (1) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank (2) +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +> arg2(:, :) = 0.0 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +> rank default +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.default.fortran +> print *, "Subroutine initialize called with unexpected rank argument" +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.endselect.fortran +> rank default +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.default.fortran +> print *, "Subroutine initialize called with unexpected rank argument" +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.block.select.rank.fortran keyword.control.endselect.fortran +> return +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.statement.control.return.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran meta.statement.control.return.fortran keyword.control.return.fortran +> +> end subroutine nested_initialise +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +>end program select_rank_test +#^^^^^^^^^^^ source.fortran.free meta.program.fortran keyword.control.endprogram.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran \ No newline at end of file diff --git a/test/resources/select_type.f90.snap b/test/resources/select_type.f90.snap new file mode 100644 index 00000000..b4b9b066 --- /dev/null +++ b/test/resources/select_type.f90.snap @@ -0,0 +1,409 @@ +> +>! ------------------------------------------------------------------------------ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! +#^ source.fortran.free comment.line.fortran +>! Tests the syntax highlighting of nested type select constructs is correct +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>!------------------------------------------------------------------------------- +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +> +>program select_type_test +#^^^^^^^ source.fortran.free meta.program.fortran keyword.control.program.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran +> implicit none +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> +> type :: point +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> real :: x, y +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end type point +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> type, extends(point) :: point_3d +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran storage.modifier.extends.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> real :: z +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end type point_3d +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> type, extends(point) :: color_point +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran storage.modifier.extends.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> integer :: color +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end type color_point +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> type(point_3d), target :: p3 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.target.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> type(color_point), target :: c +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.target.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> class(point), pointer :: p_or_c +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> class(point), pointer :: p +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.attribute-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> p_or_c => c +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +> p => p3 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.parameter.fortran +> select type ( a => p_or_c ) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> class is ( point ) +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> ! "class ( point ) :: a" implied here +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +> print *, a%x, a%y ! this block executes +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +> select type(a) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> type is (point_3d) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> print*, "type(point_3d)" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> type is (color_point) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> print*, "type(color_point)" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> class default +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.default.fortran +> print*, "no matching type" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.endselect.fortran +> +> class is (color_point) ! does not execute +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +> select type(p) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> class is (point_3d) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> print*, "class(point_3d)" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> class is (color_point) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> print*, "class(color_point)" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> class is (point) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +> print*, "class(point)" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> class default +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.default.fortran +> print*, "no matching class" +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.endselect.fortran +> +> type is ( point_3d ) ! does not execute +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +> ! "type ( point_3d ) :: a" implied here +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran comment.line.fortran +> print *, a%x, a%y, a%z +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran meta.parameter.fortran +> class default +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.default.fortran +> print*, "no matching class" +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> end select +#^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.block.select.type.fortran keyword.control.endselect.fortran +> +> +>end program select_type_test +#^^^^^^^^^^^ source.fortran.free meta.program.fortran keyword.control.endprogram.fortran +# ^ source.fortran.free meta.program.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 556c253e..23db03ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -339,7 +339,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1: +chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -448,7 +448,7 @@ commander@2.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM= -commander@^2.14.1, commander@^2.9.0: +commander@^2.14.1, commander@^2.20.3, commander@^2.9.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -646,6 +646,11 @@ diff@3.5.0, diff@^3.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + dot-prop@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" @@ -980,7 +985,7 @@ glob@^5.0.15, glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -3085,6 +3090,11 @@ vscode-languageserver-types@3.14.0: resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== +vscode-oniguruma@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.5.1.tgz#9ca10cd3ada128bd6380344ea28844243d11f695" + integrity sha512-JrBZH8DCC262TEYcYdeyZusiETu0Vli0xFgdRwNJjDcObcRjbmJP+IFcA3ScBwIXwgFHYKbAgfxtM/Cl+3Spjw== + vscode-test@^0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8" @@ -3093,6 +3103,23 @@ vscode-test@^0.4.1: http-proxy-agent "^2.1.0" https-proxy-agent "^2.2.1" +vscode-textmate@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.4.0.tgz#4b25ffc1f14ac3a90faf9a388c67a01d24257cd7" + integrity sha512-c0Q4zYZkcLizeYJ3hNyaVUM2AA8KDhNCA3JvXY8CeZSJuBdAy3bAvSbv46RClC4P3dSO9BdwhnKEx2zOo6vP/w== + +vscode-tmgrammar-test@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/vscode-tmgrammar-test/-/vscode-tmgrammar-test-0.0.11.tgz#79f8c107ef1f987f602bbc547e9849a1dbed5b3a" + integrity sha512-Bd60x/OeBLAQnIxiR2GhUic1CQZOFfWM8Pd43HjdEUBf/0vcvYAlFQikOXvv+zkItHLznjKaDX7VWKPVYUF9ug== + dependencies: + chalk "^2.4.2" + commander "^2.20.3" + diff "^4.0.2" + glob "^7.1.6" + vscode-oniguruma "^1.5.1" + vscode-textmate "^5.4.0" + vscode@^1.1.37: version "1.1.37" resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.37.tgz#c2a770bee4bb3fff765e2b72c7bcc813b8a6bb0a"