diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3e53ae86..9a667c7c 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,7 +1,8 @@ +name: Build and Test syntax on: [push] jobs: grammar: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: matrix: node-version: [12.x] diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..7425472b --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,24 @@ +on: + push: + tags: + - '*' + +name: Deploy Extension +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - run: npm ci + # - name: Publish to Open VSX Registry + # uses: HaaLeo/publish-vscode-extension@v0 + # with: + # pat: ${{ secrets.OPEN_VSX_TOKEN }} + - name: Publish to Visual Studio Marketplace + uses: HaaLeo/publish-vscode-extension@v0 + with: + pat: ${{ secrets.VS_MARKETPLACE_TOKEN }} + registryUrl: https://marketplace.visualstudio.com diff --git a/.vscode/launch.json b/.vscode/launch.json index cb6ce3ea..b6afce22 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,41 +1,34 @@ -// A launch configuration that compiles the extension and then opens it inside a new window { - "version": "0.1.0", + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", "configurations": [ { "name": "Launch Extension", "type": "extensionHost", "request": "launch", - "runtimeExecutable": "${execPath}", "args": [ "--extensionDevelopmentPath=${workspaceFolder}" ], - "stopOnEntry": false, - "sourceMaps": true, "outFiles": [ "${workspaceFolder}/out/src/**/*.js" ], - "preLaunchTask": "npm" + "preLaunchTask": "npm: watch-dev", }, { "name": "Launch Tests", "type": "extensionHost", "request": "launch", "runtimeExecutable": "${execPath}", - "env": { - "CODE_TESTS_WORKSPACE": "./" - }, "args": [ - "test/resources/sample.f90", - "--disable-extensions", "--extensionDevelopmentPath=${workspaceFolder}", "--extensionTestsPath=${workspaceFolder}/out/test" ], - "stopOnEntry": false, - "sourceMaps": true, "outFiles": [ "${workspaceFolder}/out/test/**/*.js" - ] - } + ], + "preLaunchTask": "npm: pretest setup", + }, ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ceba28fb..55e65e80 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,40 +1,48 @@ -// Available variables which can be used inside of strings. -// ${workspaceRoot}: the root folder of the team -// ${file}: the current opened file -// ${fileBasename}: the current opened file's basename -// ${fileDirname}: the current opened file's dirname -// ${fileExtname}: the current opened file's extension -// ${cwd}: the current working directory of the spawned process - -// A task runner that calls a custom npm script that compiles the extension. { "version": "2.0.0", - - // we want to run npm - "command": "npm", - - // we run the custom script "compile" as defined in package.json - "args": ["run", "compile", "--loglevel", "silent"], - - // The tsc compiler is started in watching mode - "isBackground": true, - - // use the standard tsc in watch mode problem matcher to find compile problems in the output. - "problemMatcher": "$tsc-watch", "tasks": [ { - "label": "npm", - "type": "shell", - "command": "npm", - "args": [ - "run", - "compile", - "--loglevel", - "silent" - ], + "label": "npm: watch-dev", + "type": "npm", + "script": "watch-dev", + "group": { + "kind": "build", + "isDefault": true + }, "isBackground": true, "problemMatcher": "$tsc-watch", - "group": "build" + "detail": "tsc -watch -p tsconfig.json" + }, + { + "label": "npm: compile-dev", + "type": "npm", + "script": "compile-dev", + "group": "build", + "problemMatcher": "$tsc", + "detail": "tsc -p tsconfig.json" + }, + { + "label": "npm: pretest", + "type": "npm", + "script": "pretest", + "group": "test", + "problemMatcher": "$tsc", + "detail": "tsc -p tsconfig.test.json" + }, + { + "label": "npm: pretest setup", + "type": "shell", + "dependsOn": [ + "npm: compile-dev", + "npm: pretest" + ], + "dependsOrder": "sequence", + "group": { + "kind": "test", + "isDefault": true + }, + "detail": "setup for test launch" + } ] } \ No newline at end of file diff --git a/.vscode/tasks.json.old b/.vscode/tasks.json.old deleted file mode 100644 index 1e37eb7b..00000000 --- a/.vscode/tasks.json.old +++ /dev/null @@ -1,30 +0,0 @@ -// Available variables which can be used inside of strings. -// ${workspaceRoot}: the root folder of the team -// ${file}: the current opened file -// ${fileBasename}: the current opened file's basename -// ${fileDirname}: the current opened file's dirname -// ${fileExtname}: the current opened file's extension -// ${cwd}: the current working directory of the spawned process - -// A task runner that calls a custom npm script that compiles the extension. -{ - "version": "0.1.0", - - // we want to run npm - "command": "npm", - - // the command is a shell script - "isShellCommand": true, - - // show the output window only if unrecognized errors occur. - "showOutput": "silent", - - // we run the custom script "compile" as defined in package.json - "args": ["run", "compile", "--loglevel", "silent"], - - // The tsc compiler is started in watching mode - "isBackground": true, - - // use the standard tsc in watch mode problem matcher to find compile problems in the output. - "problemMatcher": "$tsc-watch" -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 39f295b5..66c306c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,43 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +## [2.4.0] + +### Changed + +- Changes the syntax highlighting of preprocessor macros to match that of C++ +- Changes npm `vscode` module to `@types/vscode` and `@vscode/test-electron` + ([#263](https://github.com/krvajal/vscode-fortran-support/issues/263)) + +### Fixed + +- Fixes OpenACC syntax highlighting not triggering +- Fixes internal hover documentation display + ([#205](https://github.com/krvajal/vscode-fortran-support/issues/205)) +- Fixes preprocessor syntax highlighting with line continuations + ([#248](https://github.com/krvajal/vscode-fortran-support/issues/248)) +- Fixes preprocessor syntax highlighting with derived type and conditionals + ([#249](https://github.com/krvajal/vscode-fortran-support/issues/249)) +- Fixes the general preprocessor syntax highlighting and adds testing +- Fixes using function/subroutine as parameter in functions/subroutines + ([#207](https://github.com/krvajal/vscode-fortran-support/issues/207)) +- Fixes labelled conditionals erroneous highlighting + ([#204](https://github.com/krvajal/vscode-fortran-support/issues/204)) +- Fixes labelled conditionals erroneous highlighting when followed by whitespace + ([#205](https://github.com/krvajal/vscode-fortran-support/issues/205)) +- Fixes labelled `stop` conditions + ([#172](https://github.com/krvajal/vscode-fortran-support/issues/172)) +- Fixes incorrect comment capture for type, abstract|extends types + ([#262](https://github.com/krvajal/vscode-fortran-support/issues/262)) + ### Added - Adds support for .f18 and .F18 file extensions ([#252](https://github.com/krvajal/vscode-fortran-support/pull/252)) +- Adds workflow for automatic publishing to VS Marketplace + ([#237](https://github.com/krvajal/vscode-fortran-support/issues/237)) +- Adds basic support for pFUnit (.pf) highlighting + ([#185](https://github.com/krvajal/vscode-fortran-support/issues/185)) ## [2.3.0] @@ -28,7 +61,25 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - Added syntax highlight support for OpenACC - ([224](https://github.com/krvajal/vscode-fortran-support/pull/224)) + ([#224](https://github.com/krvajal/vscode-fortran-support/pull/224)) + +## [2.2.2] - 2020-12-11 + +### Fixed + +- Fixed fixed-form tab character at start syntax highlighting + ([#191](https://github.com/krvajal/vscode-fortran-support/pull/191)) +- Fixed `class` paranthesis erroneous syntax highlighting + ([#196](https://github.com/krvajal/vscode-fortran-support/issues/196)) +- Fixed multiline block interface syntax highlighting + ([#202](https://github.com/krvajal/vscode-fortran-support/issues/202)) + +### Changed + +- Updated `package.json` + ([#192](https://github.com/krvajal/vscode-fortran-support/pull/192)) +- Rewrote solution for `select` in variable name + ([#203](https://github.com/krvajal/vscode-fortran-support/pull/203)) ## [2.2.1] - 2020-04-11 @@ -92,7 +143,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Changed default configuration of LanguageServer to `false` -- Update vscode minimal engine +- Update vscode minimal engine ## [2.0.0] - 2018-10-14 @@ -212,10 +263,31 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added - Show docs for intrinsic functions on hover - ### Changed + +### Changed + - Updated icon for the extension - Fix bug on linter not working -## [Unreleased] +## [0.1.0] - Initial release + +[unreleased]: https://github.com/krvajal/vscode-fortran-support/compare/v2.4.0...HEAD +[2.4.0]: https://github.com/krvajal/vscode-fortran-support/compare/v2.3.0...v2.4.0 +[2.3.0]: https://github.com/krvajal/vscode-fortran-support/compare/v2.2.2...v2.3.0 +[2.2.2]: https://github.com/krvajal/vscode-fortran-support/compare/2.2.1...v2.2.1 +[2.2.1]: https://github.com/krvajal/vscode-fortran-support/compare/2.2.0...v2.2.1 +[2.2.0]: https://github.com/krvajal/vscode-fortran-support/compare/2.1.0...v2.2.0 +[2.1.0]: https://github.com/krvajal/vscode-fortran-support/compare/2.0.2...2.1.0 +[2.0.2]: https://github.com/krvajal/vscode-fortran-support/compare/2.0.0...2.0.2 +[2.0.0]: https://github.com/krvajal/vscode-fortran-support/compare/v1.3.0...v2.0.0 +[1.3.0]: https://github.com/krvajal/vscode-fortran-support/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/krvajal/vscode-fortran-support/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/krvajal/vscode-fortran-support/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/krvajal/vscode-fortran-support/compare/v0.6.3...v1.0.0 +[0.6.3]: https://github.com/krvajal/vscode-fortran-support/compare/v0.6.1...v0.6.3 +[0.6.1]: https://github.com/krvajal/vscode-fortran-support/compare/v0.6.0...v0.6.1 +[0.6.0]: https://github.com/krvajal/vscode-fortran-support/compare/v0.4.5...v0.6.0 +[0.4.5]: https://github.com/krvajal/vscode-fortran-support/compare/v0.4.4...v0.4.5 +[0.4.4]: https://github.com/krvajal/vscode-fortran-support/compare/tag/v0.4.4 diff --git a/README.md b/README.md index 0b561f16..0ea9e5cd 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Modern Fortran language support for VSCode -[![Build Status](https://travis-ci.org/krvajal/vscode-fortran-support.svg?branch=master)](https://travis-ci.org/krvajal/vscode-fortran-support) -[![codecov](https://codecov.io/gh/krvajal/vscode-fortran-support/branch/master/graph/badge.svg)](https://codecov.io/gh/krvajal/vscode-fortran-support) -[![MIT License](https://img.shields.io/npm/l/stack-overflow-copy-paste.svg?style=flat-square)](http://opensource.org/licenses/MIT) +[![GitHub Actions](https://github.com/krvajal/vscode-fortran-support/actions/workflows/main.yaml/badge.svg)](https://github.com/krvajal/vscode-fortran-support/actions) +[![Downloads](https://vsmarketplacebadge.apphb.com/downloads-short/krvajalm.linter-gfortran.svg)](https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran) [![Installs](https://vsmarketplacebadge.apphb.com/installs/krvajalm.linter-gfortran.svg)](https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran) -[![GitHub release](https://img.shields.io/github/release/krvajal/vscode-fortran-support.svg)](https://GitHub.com/krvajal/vscode-fortran-support/releases/) +[![VS Marketplace](https://vsmarketplacebadge.apphb.com/version-short/krvajalm.linter-gfortran.svg)](https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran) +[![MIT License](https://img.shields.io/npm/l/stack-overflow-copy-paste.svg?)](http://opensource.org/licenses/MIT) > This extension provides support for the Fortran programming language. It includes syntax highlighting, debugging, code snippets and a linting based on `gfortran`. You can download the Visual Studio Code editor from [here](https://code.visualstudio.com/download). diff --git a/language-configuration.json b/language-configuration.json index ff54a94e..2e9142ee 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -28,7 +28,23 @@ { "open": "(/", "close": "/" - } + }, + { + "open": "'", + "close": "'", + "notIn": [ + "string", + "comment" + ] + }, + { + "open": "\"", + "close": "\"", + "notIn": [ + "string", + "comment" + ] + }, ], "surroundingPairs": [ [ diff --git a/package-lock.json b/package-lock.json index 10f426ee..9a945bf2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,77 +1,148 @@ { "name": "linter-gfortran", - "version": "2.2.1", + "version": "2.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dev": true, "requires": { - "any-observable": "^0.3.0" + "@babel/highlight": "^7.14.5" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/events": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", - "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==", + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", "dev": true }, - "@types/fs-extra": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-0.0.35.tgz", - "integrity": "sha1-PtQAwBIvsWHbUdoj2WulBAy5x9k=", + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@types/node": "*" + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, "@types/glob": { - "version": "5.0.34", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.34.tgz", - "integrity": "sha512-sUvpieq+HsWTLdkeOI8Mi8u22Ag3AoGuM3sv+XMP1bKtbaIAHpEA2f52K2mz6vK5PVhTa3bFyRZLZMqTxOo2Cw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, "@types/minimatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.2.tgz", - "integrity": "sha512-tctoxbfuMCxeI2CAsnwoZQfaBA+T7gPzDzDuiiFnyCSSyGYEB92cmRTh6E3tdR1hWsprbJ9IdbvX3PzLmJU/GA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "@types/mocha": { - "version": "2.2.45", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.45.tgz", - "integrity": "sha512-tE1SYtNG3I3atRVPELSGN2FJJJtPg3O/G0tycYSyzeDqdAbdLPRH089LhpWYA5M/iHeWHkVZq/b0OVKngcK0Eg==", - "dev": true, - "requires": { - "@types/node": "*" - } + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", + "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", + "dev": true }, "@types/node": { - "version": "6.0.95", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.95.tgz", - "integrity": "sha512-d1Twx1NM49dQ7jbNZfaHTQWuYL9cFVrGxYpbc3BvMf4626lOJOZnp2aJQNB9vP/WX3UOe1TrTUMABrGRu6FZhg==", + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==", "dev": true }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/vscode": { + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.61.0.tgz", + "integrity": "sha512-9k5Nwq45hkRwdfCFY+eKXeQQSbPoA114mF7U/4uJXRBJeGIO7MuJdhF1PnaDN+lllL9iKGQtd6FFXShBXMNaFg==", + "dev": true + }, + "@types/which": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.1.tgz", + "integrity": "sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ==", + "dev": true + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, + "@vscode/test-electron": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-1.6.2.tgz", + "integrity": "sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + } + }, "agent-base": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", @@ -98,59 +169,72 @@ } } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { - "string-width": "^2.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "type-fest": "^0.21.3" } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } }, "argparse": { "version": "1.0.9", @@ -161,213 +245,45 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "big-integer": { + "version": "1.6.50", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz", + "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - } - } + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true }, "brace-expansion": { "version": "1.1.8", @@ -380,32 +296,12 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, "browser-stdout": { @@ -414,10 +310,16 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", "dev": true }, "builtin-modules": { @@ -426,200 +328,98 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "traverse": ">=0.3.0 <0.4" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "callsites": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "requires": { - "caller-callsite": "^2.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } }, - "camelcase-keys": { + "cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" } }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -637,28 +437,16 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "concat-map": { @@ -667,3522 +455,1148 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "capture-stack-trace": "^1.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - } + "ms": "2.1.2" } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "readable-stream": "^2.0.2" } }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "ansi-colors": "^4.1.1" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "is-arrayish": "^0.2.1" } }, - "decache": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.3.0.tgz", - "integrity": "sha1-o5XkBwlWmKyKbe8B8qaky3Y49jU=", + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "callsite": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "glob": "^7.1.3" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "dot-prop": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", - "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { - "once": "^1.4.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-glob": "^4.0.1" } }, - "es6-promise": { + "graceful-fs": { "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" + "function-bind": "^1.1.1" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "ms": "^2.1.1" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "agent-base": "6", + "debug": "4" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "husky": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", + "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "time-stamp": "^1.0.0" - } - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "gulp-util": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^1.0.11", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - } - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lint-staged": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.3.0.tgz", - "integrity": "sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "commander": "^2.14.1", - "cosmiconfig": "^5.0.2", - "debug": "^3.1.0", - "dedent": "^0.7.0", - "execa": "^0.9.0", - "find-parent-dir": "^0.3.0", - "is-glob": "^4.0.0", - "is-windows": "^1.0.2", - "jest-validate": "^23.5.0", - "listr": "^0.14.1", - "lodash": "^4.17.5", - "log-symbols": "^2.2.0", - "micromatch": "^3.1.8", - "npm-which": "^3.0.1", - "p-map": "^1.1.1", - "path-is-inside": "^1.0.2", - "pify": "^3.0.0", - "please-upgrade-node": "^3.0.2", - "staged-git-files": "1.1.1", - "string-argv": "^0.0.2", - "stringify-object": "^3.2.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "dependencies": { - "p-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", - "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", - "dev": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "dev": true, - "requires": { - "commander": "2.3.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.11", - "growl": "1.9.2", - "jade": "0.26.3", - "mkdirp": "0.5.1", - "supports-color": "1.2.0", - "to-iso-string": "0.0.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2", - "minimatch": "0.3" - } - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - } - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-path": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", - "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", - "dev": true, - "requires": { - "which": "^1.2.10" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", - "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true, - "requires": { - "commander": "^2.9.0", - "npm-path": "^2.0.2", - "which": "^1.2.10" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - } - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { + "once": "^1.3.0", "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "p-limit": { + "is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "p-try": "^2.0.0" + "binary-extensions": "^2.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "has": "^1.0.3" } }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "is-extglob": "^2.1.1" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { + "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - } - } - }, - "please-upgrade-node": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", - "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } } } }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "remap-istanbul": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.8.4.tgz", - "integrity": "sha1-tL/f28kO+mNemiix9KEW4iyMJpc=", - "dev": true, - "requires": { - "amdefine": "^1.0.0", - "gulp-util": "3.0.7", - "istanbul": "0.4.5", - "source-map": ">=0.5.6", - "through2": "2.0.1" + "lint-staged": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", + "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", + "dev": true, + "requires": { + "cli-truncate": "2.1.0", + "colorette": "^1.4.0", + "commander": "^8.2.0", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "listr2": "^3.12.2", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "3.3.0", + "supports-color": "8.1.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "commander": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", + "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", "dev": true } } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "run-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", - "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", - "dev": true - }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "listr2": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", + "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", "dev": true, "requires": { - "ret": "~0.1.10" + "cli-truncate": "^2.1.0", + "colorette": "^1.4.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" } }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "semver": "^5.0.3" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "minimist": "^1.2.5" } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "mocha": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", + "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.2", + "debug": "4.3.2", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.7", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.25", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.1.5", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "argparse": "^2.0.1" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "kind-of": "^3.2.0" + "path-key": "^3.0.0" } }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "optional": true, "requires": { - "amdefine": ">=0.0.4" + "wrappy": "1" } }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "mimic-fn": "^2.1.0" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "yocto-queue": "^0.1.0" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } }, - "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "spdx-license-ids": "^1.0.2" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "semver-compare": "^1.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "staged-git-files": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", - "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", - "dev": true + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "string-argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", - "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", - "dev": true + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } }, - "string-width": { + "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "glob": "^7.1.3" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "tslib": "^1.9.0" } }, - "strip-eof": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { - "get-stdin": "^4.0.1" + "randombytes": "^2.1.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "shebang-regex": "^3.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } + "signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "dev": true }, - "through2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { - "readable-stream": "~2.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - } + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "safe-buffer": "~5.1.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tslint": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz", - "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "babel-code-frame": "^6.20.0", - "colors": "^1.1.2", - "diff": "^3.0.1", - "findup-sync": "~0.3.0", - "glob": "^7.1.1", - "optimist": "~0.6.0", - "resolve": "^1.1.7", - "tsutils": "^1.1.0", - "update-notifier": "^2.0.0" - }, - "dependencies": { - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - } + "ansi-regex": "^5.0.1" } }, - "tsutils": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", - "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=", + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "uglify-js": { - "version": "3.13.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.9.tgz", - "integrity": "sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==", - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "has-flag": "^4.0.0" } }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } + "is-number": "^7.0.0" } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", "dev": true }, - "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", "dev": true, "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^3.1.0", + "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" + "supports-color": "^5.3.0" } }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -4190,159 +1604,66 @@ "dev": true }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^2.0.0" + "has-flag": "^3.0.0" } } } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "tslib": "^1.8.1" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" } }, - "vscode": { - "version": "1.1.37", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", - "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", - "dev": true, - "requires": { - "glob": "^7.1.2", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "mocha": "^5.2.0", - "semver": "^5.4.1", - "source-map-support": "^0.5.0", - "vscode-test": "^0.4.1" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "vscode-jsonrpc": { "version": "4.0.0", @@ -4379,111 +1700,125 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==" }, - "vscode-test": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", - "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", + "vscode-oniguruma": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.5.1.tgz", + "integrity": "sha512-JrBZH8DCC262TEYcYdeyZusiETu0Vli0xFgdRwNJjDcObcRjbmJP+IFcA3ScBwIXwgFHYKbAgfxtM/Cl+3Spjw==", + "dev": true + }, + "vscode-textmate": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.4.0.tgz", + "integrity": "sha512-c0Q4zYZkcLizeYJ3hNyaVUM2AA8KDhNCA3JvXY8CeZSJuBdAy3bAvSbv46RClC4P3dSO9BdwhnKEx2zOo6vP/w==", + "dev": true + }, + "vscode-tmgrammar-test": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/vscode-tmgrammar-test/-/vscode-tmgrammar-test-0.0.11.tgz", + "integrity": "sha512-Bd60x/OeBLAQnIxiR2GhUic1CQZOFfWM8Pd43HjdEUBf/0vcvYAlFQikOXvv+zkItHLznjKaDX7VWKPVYUF9ug==", "dev": true, "requires": { - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1" + "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" }, "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "color-convert": "^1.9.0" } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "has-flag": "^3.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "workerpool": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", "dev": true }, "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "wrappy": { @@ -4492,33 +1827,55 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 2a89fdf1..0dee5dd2 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,36 @@ "name": "linter-gfortran", "displayName": "Modern Fortran", "description": "Modern Fortran language support, including syntax highlighting and error detection.", - "version": "2.2.1", + "version": "2.4.0", "publisher": "krvajalm", + "license": "MIT", + "author": { + "email": "krvajal.miguelangel@gmail.com", + "name": "Miguel Carvajal" + }, + "maintainers": [ + { + "email": "giannis.nikiteas@gmail.com", + "name": "Giannis Nikiteas" + } + ], "engines": { "vscode": "^1.30.x" }, "icon": "images/icon.png", + "homepage": "https://github.com/krvajalmiguelangel/vscode-fortran-support", + "qna": "https://github.com/krvajalmiguelangel/vscode-fortran-support/issues", "repository": { "type": "git", "url": "https://github.com/krvajalmiguelangel/vscode-fortran-support.git" }, + "keywords": [ + "Fortran", + "Free Form fortran", + "Fixed Form fortran", + "IntelliSense", + "IDE" + ], "categories": [ "Programming Languages", "Snippets", @@ -38,10 +58,16 @@ ".F90", ".f95", ".F95", + ".f03", + ".F03", ".f08", ".F08", ".f18", - ".F18" + ".F18", + ".fpp", + ".FPP", + ".pf", + ".PF" ], "configuration": "./language-configuration.json" }, @@ -58,9 +84,7 @@ ".f77", ".F77", ".for", - ".FOR", - ".fpp", - ".FPP" + ".FOR" ], "configuration": "./language-configuration.json" } @@ -182,29 +206,32 @@ ] }, "scripts": { - "vscode:prepublish": "tsc -p ./", - "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\"", + "vscode:prepublish": "npm run compile", + "compile": "tsc -p tsconfig.prod.json", + "compile-dev": "tsc -p tsconfig.json", + "watch": "tsc -watch -p tsconfig.prod.json", + "watch-dev": "tsc -watch -p tsconfig.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "node ./out/test/runTest.js", + "test:grammar-free": "vscode-tmgrammar-snap -s source.fortran.free -g ./syntaxes/fortran_free-form.tmLanguage.json -t \"./test/**/*{.f90,F90}\"", + "test:grammar-fixed": "vscode-tmgrammar-snap -s source.fortran.fixed -g ./syntaxes/fortran_fixed-form.tmLanguage.json -t \"./test/**/*{.f,F}\"", + "test:grammar": "npm run test:grammar-free && npm run test:grammar-fixed", + "test:grammar-update": "npm run test:grammar-free -- -u && npm run test:grammar-fixed -- -u", "lint": "node ./node_modules/tslint/bin/tslint ./src/**/*.ts " }, "devDependencies": { - "@types/fs-extra": "0.0.35", - "@types/glob": "^5.0.30", - "@types/mocha": "^2.2.32", - "@types/node": "^15.12.1", - "decache": "^4.1.0", - "fs-extra": "^1.0.0", - "glob": "^7.1.1", - "husky": "^1.1.2", - "istanbul": "^0.4.5", - "lint-staged": "^7.3.0", - "mocha": "^2.3.3", - "remap-istanbul": "^0.8.4", - "tslint": "^4.0.2", - "typescript": "^3.5.1", - "vscode": "^1.1.37", + "@types/glob": "^7.1.4", + "@types/mocha": "^9.0.0", + "@types/node": "^15.14.9", + "@types/vscode": "^1.30.0", + "@types/which": "^2.0.1", + "@vscode/test-electron": "^1.6.2", + "glob": "^7.2.0", + "husky": "^7.0.2", + "lint-staged": "^11.2.3", + "mocha": "^9.1.3", + "tslint": "^5.20.1", + "typescript": "^3.9.10", "vscode-tmgrammar-test": "^0.0.11" }, "husky": { diff --git a/src/docs/ABORT.json b/src/docs/ABORT.json index d1782d7d..b1f23751 100644 --- a/src/docs/ABORT.json +++ b/src/docs/ABORT.json @@ -1,4 +1,4 @@ { - "keyword":"ABORT", - "docstr":"`ABORT` — Abort the program\n\n### Description\n`ABORT` causes immediate termination of the program. On operating\nsystems that support a core dump, `ABORT` will produce a core dump. \nIt will also print a backtrace, unless `-fno-backtrace` is given.\n\n\n\n### Syntax\n`CALL ABORT`\n\n\n### Return value\nDoes not return.\n\n\n\n### Example\n\n ```\n\n\nprogram test_abort\n\n  integer :: i = 1, j = 2\n\n  if (i /= j) call abort\n\nend program test_abort\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nEXIT, KILL, BACKTRACE\n\n " -} \ No newline at end of file + "keyword": "ABORT", + "docstr": "`ABORT` — Abort the program\n\n### Description\n`ABORT` causes immediate termination of the program. On operating\nsystems that support a core dump, `ABORT` will produce a core dump. \nIt will also print a backtrace, unless `-fno-backtrace` is given.\n\n\n\n### Syntax\n`CALL ABORT`\n\n\n### Return value\nDoes not return.\n\n\n\n### Example\n```\n\n\nprogram test_abort\n\n  integer :: i = 1, j = 2\n\n  if (i /= j) call abort\n\nend program test_abort\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nEXIT, KILL, BACKTRACE\n\n " +} diff --git a/src/docs/ABS.json b/src/docs/ABS.json index dec1dfbb..2ed98b3b 100644 --- a/src/docs/ABS.json +++ b/src/docs/ABS.json @@ -1,4 +1,4 @@ { - "keyword":"ABS", - "docstr":"`ABS` — Absolute value\n\n### Description\n`ABS(A)` computes the absolute value of `A`.\n\n\n\n### Syntax\n`RESULT = ABS(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and\nkind as the argument except the return value is `REAL` for a\n`COMPLEX` argument.\n\n\n\n### Example\n\n ```\n\n\nprogram test_abs\n\n  integer :: i = -1\n\n  real :: x = -1.e0\n\n  complex :: z = (-1.e0,0.e0)\n\n  i = abs(i)\n\n  x = abs(x)\n\n  x = abs(z)\n\nend program test_abs\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ABS(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `CABS(A)` | `COMPLEX(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DABS(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n | `IABS(A)` | `INTEGER(4) A` | `INTEGER(4)` | Fortran 77 and later\n\n | `ZABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n | `CDABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ABS", + "docstr": "`ABS` — Absolute value\n\n### Description\n`ABS(A)` computes the absolute value of `A`.\n\n\n\n### Syntax\n`RESULT = ABS(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and\nkind as the argument except the return value is `REAL` for a\n`COMPLEX` argument.\n\n\n\n### Example\n```\n\n\nprogram test_abs\n\n  integer :: i = -1\n\n  real :: x = -1.e0\n\n  complex :: z = (-1.e0,0.e0)\n\n  i = abs(i)\n\n  x = abs(x)\n\n  x = abs(z)\n\nend program test_abs\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ABS(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `CABS(A)` | `COMPLEX(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DABS(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n | `IABS(A)` | `INTEGER(4) A` | `INTEGER(4)` | Fortran 77 and later\n\n | `ZABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n | `CDABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ACCESS.json b/src/docs/ACCESS.json index a4c8c053..d7854e1a 100644 --- a/src/docs/ACCESS.json +++ b/src/docs/ACCESS.json @@ -1,4 +1,4 @@ { - "keyword":"ACCESS", - "docstr":"`ACCESS` — Checks file access modes\n\n### Description\n`ACCESS(NAME, MODE)` checks whether the file `NAME`\nexists, is readable, writable or executable. Except for the\nexecutable check, `ACCESS` can be replaced by\nFortran 95's `INQUIRE`.\n\n\n\n### Syntax\n`RESULT = ACCESS(NAME, MODE)`\n\n\n### Arguments\n\n \n of default kind with the\nfile name. Tailing blank are ignored unless the character `achar(0)`is present, then all characters up to and excluding `achar(0)` are\nused as file name. \n\n | `MODE` | Scalar `CHARACTER` of default kind with the\nfile access mode, may be any concatenation of `\"r\"` (readable),\n`\"w\"` (writable) and `\"x\"` (executable), or `\" \"` to check\nfor existence.\n\n\n\n\n\n\n### Return value\nReturns a scalar `INTEGER`, which is `0` if the file is\naccessible in the given mode; otherwise or if an invalid argument\nhas been given for `MODE` the value `1` is returned.\n\n\n\n### Example\n\n ```\n\n\nprogram access_test\n\n  implicit none\n\n  character(len=*), parameter :: file = 'test.dat'\n\n  character(len=*), parameter :: file2 = 'test.dat '//achar(0)\n\n  if(access(file,' ') == 0) print *, trim(file),' is exists'\n\n  if(access(file,'r') == 0) print *, trim(file),' is readable'\n\n  if(access(file,'w') == 0) print *, trim(file),' is writable'\n\n  if(access(file,'x') == 0) print *, trim(file),' is executable'\n\n  if(access(file2,'rwx') == 0) &\n\n    print *, trim(file2),' is readable, writable and executable'\n\nend program access_test\n\n```\n\n\n\n### Specific names\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\n\n" -} \ No newline at end of file + "keyword": "ACCESS", + "docstr": "`ACCESS` — Checks file access modes\n\n### Description\n`ACCESS(NAME, MODE)` checks whether the file `NAME`\nexists, is readable, writable or executable. Except for the\nexecutable check, `ACCESS` can be replaced by\nFortran 95's `INQUIRE`.\n\n\n\n### Syntax\n`RESULT = ACCESS(NAME, MODE)`\n\n\n### Arguments\n\n \n of default kind with the\nfile name. Tailing blank are ignored unless the character `achar(0)`is present, then all characters up to and excluding `achar(0)` are\nused as file name. \n\n | `MODE` | Scalar `CHARACTER` of default kind with the\nfile access mode, may be any concatenation of `\"r\"` (readable),\n`\"w\"` (writable) and `\"x\"` (executable), or `\" \"` to check\nfor existence.\n\n\n\n\n\n\n### Return value\nReturns a scalar `INTEGER`, which is `0` if the file is\naccessible in the given mode; otherwise or if an invalid argument\nhas been given for `MODE` the value `1` is returned.\n\n\n\n### Example\n```\n\n\nprogram access_test\n\n  implicit none\n\n  character(len=*), parameter :: file = 'test.dat'\n\n  character(len=*), parameter :: file2 = 'test.dat '//achar(0)\n\n  if(access(file,' ') == 0) print *, trim(file),' is exists'\n\n  if(access(file,'r') == 0) print *, trim(file),' is readable'\n\n  if(access(file,'w') == 0) print *, trim(file),' is writable'\n\n  if(access(file,'x') == 0) print *, trim(file),' is executable'\n\n  if(access(file2,'rwx') == 0) &\n\n    print *, trim(file2),' is readable, writable and executable'\n\nend program access_test\n\n```\n\n\n\n### Specific names\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\n\n" +} diff --git a/src/docs/ACHAR.json b/src/docs/ACHAR.json index 4597279e..977cab07 100644 --- a/src/docs/ACHAR.json +++ b/src/docs/ACHAR.json @@ -1,4 +1,4 @@ { - "keyword":"ACHAR", - "docstr":"`ACHAR` — Character in ASCII collating sequence\n\n### Description\n`ACHAR(I)` returns the character located at position `I`in the ASCII collating sequence.\n\n\n\n### Syntax\n`RESULT = ACHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` with a length of one. \nIf the `KIND` argument is present, the return value is of the\nspecified kind and of the default kind otherwise.\n\n\n\n### Example\n\n ```\n\n\nprogram test_achar\n\n  character c\n\n  c = achar(32)\n\nend program test_achar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCHAR, IACHAR, ICHAR\n\n " -} \ No newline at end of file + "keyword": "ACHAR", + "docstr": "`ACHAR` — Character in ASCII collating sequence\n\n### Description\n`ACHAR(I)` returns the character located at position `I`in the ASCII collating sequence.\n\n\n\n### Syntax\n`RESULT = ACHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` with a length of one. \nIf the `KIND` argument is present, the return value is of the\nspecified kind and of the default kind otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_achar\n\n  character c\n\n  c = achar(32)\n\nend program test_achar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCHAR, IACHAR, ICHAR\n\n " +} diff --git a/src/docs/ACOS.json b/src/docs/ACOS.json index 34c7a9c3..8413c334 100644 --- a/src/docs/ACOS.json +++ b/src/docs/ACOS.json @@ -1,4 +1,4 @@ { - "keyword":"ACOS", - "docstr":"`ACOS` — Arccosine function\n\n### Description\n`ACOS(X)` computes the arccosine of `X` (inverse of `COS(X)`).\n\n\n\n### Syntax\n`RESULT = ACOS(X)`\n\n\n### Arguments\n\n \n with a magnitude that is\nless than or equal to one - or the type shall be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n0 \\leq \\Re \\acos(x) \\leq \\pi.\n\n\n\n### Example\n\n ```\n\n\nprogram test_acos\n\n  real(8) :: x = 0.866_8\n\n  x = acos(x)\n\nend program test_acos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ACOS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DACOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COS\n\n " -} \ No newline at end of file + "keyword": "ACOS", + "docstr": "`ACOS` — Arccosine function\n\n### Description\n`ACOS(X)` computes the arccosine of `X` (inverse of `COS(X)`).\n\n\n\n### Syntax\n`RESULT = ACOS(X)`\n\n\n### Arguments\n\n \n with a magnitude that is\nless than or equal to one - or the type shall be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n0 \\leq \\Re \\acos(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_acos\n\n  real(8) :: x = 0.866_8\n\n  x = acos(x)\n\nend program test_acos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ACOS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DACOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COS\n\n " +} diff --git a/src/docs/ACOSD.json b/src/docs/ACOSD.json index 39c425e1..00b3a41c 100644 --- a/src/docs/ACOSD.json +++ b/src/docs/ACOSD.json @@ -1,4 +1,4 @@ { - "keyword":"ACOSD", - "docstr":"`ACOSD` — Arccosine function, degrees\n\n### Description\nACOSD(X) computes the arccosine of X in degrees (inverse of COSD(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ACOSD(X)\n### Arguments\n- X: The type shall either be REAL with a magnitude that is less than or equal to one - or the type shall be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range 0 \\leq \\Re \\acos(x) \\leq 180.\n" + "keyword": "ACOSD", + "docstr": "`ACOSD` — Arccosine function, degrees\n\n### Description\nACOSD(X) computes the arccosine of X in degrees (inverse of COSD(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ACOSD(X)\n### Arguments\n- X: The type shall either be REAL with a magnitude that is less than or equal to one - or the type shall be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range 0 \\leq \\Re \\acos(x) \\leq 180.\n" } diff --git a/src/docs/ACOSH.json b/src/docs/ACOSH.json index 526e1c5f..164be3ca 100644 --- a/src/docs/ACOSH.json +++ b/src/docs/ACOSH.json @@ -1,4 +1,4 @@ { - "keyword":"ACOSH", - "docstr":"`ACOSH` — Inverse hyperbolic cosine function\n\n### Description\n`ACOSH(X)` computes the inverse hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`RESULT = ACOSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n 0 \\leq \\Im \\acosh(x) \\leq \\pi.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_acosh\n\n  REAL(8), DIMENSION(3) :: x = (/ 1.0, 2.0, 3.0 /)\n\n  WRITE (*,*) ACOSH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DACOSH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COSH\n" -} \ No newline at end of file + "keyword": "ACOSH", + "docstr": "`ACOSH` — Inverse hyperbolic cosine function\n\n### Description\n`ACOSH(X)` computes the inverse hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`RESULT = ACOSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n 0 \\leq \\Im \\acosh(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nPROGRAM test_acosh\n\n  REAL(8), DIMENSION(3) :: x = (/ 1.0, 2.0, 3.0 /)\n\n  WRITE (*,*) ACOSH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DACOSH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COSH\n" +} diff --git a/src/docs/ADJUSTL.json b/src/docs/ADJUSTL.json index fd8242c8..07c42d99 100644 --- a/src/docs/ADJUSTL.json +++ b/src/docs/ADJUSTL.json @@ -1,4 +1,4 @@ { - "keyword":"ADJUSTL", - "docstr":"`ADJUSTL` — Left adjust a string\n\n### Description\n`ADJUSTL(STRING)` will left adjust a string by removing leading spaces. \nSpaces are inserted at the end of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTL(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where leading spaces are removed and the same number of\nspaces are inserted on the end of `STRING`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_adjustl\n\n  character(len=20) :: str = ' gfortran'\n\n  str = adjustl(str)\n\n  print *, str\n\nend program test_adjustl\n\n```\n\n\n\n### Standard\nFortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTR, TRIM\n" -} \ No newline at end of file + "keyword": "ADJUSTL", + "docstr": "`ADJUSTL` — Left adjust a string\n\n### Description\n`ADJUSTL(STRING)` will left adjust a string by removing leading spaces. \nSpaces are inserted at the end of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTL(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where leading spaces are removed and the same number of\nspaces are inserted on the end of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustl\n\n  character(len=20) :: str = ' gfortran'\n\n  str = adjustl(str)\n\n  print *, str\n\nend program test_adjustl\n\n```\n\n\n\n### Standard\nFortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTR, TRIM\n" +} diff --git a/src/docs/ADJUSTR.json b/src/docs/ADJUSTR.json index f4d167eb..37cc7710 100644 --- a/src/docs/ADJUSTR.json +++ b/src/docs/ADJUSTR.json @@ -1,4 +1,4 @@ { - "keyword":"ADJUSTR", - "docstr":"`ADJUSTR` — Right adjust a string\n\n### Description\n`ADJUSTR(STRING)` will right adjust a string by removing trailing spaces. \nSpaces are inserted at the start of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTR(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where trailing spaces are removed and the same number of\nspaces are inserted at the start of `STRING`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_adjustr\n\n  character(len=20) :: str = 'gfortran'\n\n  str = adjustr(str)\n\n  print *, str\n\nend program test_adjustr\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTL, TRIM\n" -} \ No newline at end of file + "keyword": "ADJUSTR", + "docstr": "`ADJUSTR` — Right adjust a string\n\n### Description\n`ADJUSTR(STRING)` will right adjust a string by removing trailing spaces. \nSpaces are inserted at the start of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTR(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where trailing spaces are removed and the same number of\nspaces are inserted at the start of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustr\n\n  character(len=20) :: str = 'gfortran'\n\n  str = adjustr(str)\n\n  print *, str\n\nend program test_adjustr\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTL, TRIM\n" +} diff --git a/src/docs/AIMAG.json b/src/docs/AIMAG.json index fcc79a92..0c2691bd 100644 --- a/src/docs/AIMAG.json +++ b/src/docs/AIMAG.json @@ -1,4 +1,4 @@ { - "keyword":"AIMAG", - "docstr":"`AIMAG` — Imaginary part of complex number\n\n### Description\n`AIMAG(Z)` yields the imaginary part of complex argument `Z`. \nThe `IMAG(Z)` and `IMAGPART(Z)` intrinsic functions are provided\nfor compatibility with *g77*, and their use in new code is\nstrongly discouraged.\n\n\n\n### Syntax\n`RESULT = AIMAG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the\nkind type parameter of the argument.\n\n\n\n### Example\n\n ```\n\n\nprogram test_aimag\n\n  complex(4) z4\n\n  complex(8) z8\n\n  z4 = cmplx(1.e0_4, 0.e0_4)\n\n  z8 = cmplx(0.e0_8, 1.e0_8)\n\n  print *, aimag(z4), dimag(z8)\n\nend program test_aimag\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AIMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `DIMAG(Z)` | `COMPLEX(8) Z` | `REAL(8)` | GNU extension\n\n | `IMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `IMAGPART(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "AIMAG", + "docstr": "`AIMAG` — Imaginary part of complex number\n\n### Description\n`AIMAG(Z)` yields the imaginary part of complex argument `Z`. \nThe `IMAG(Z)` and `IMAGPART(Z)` intrinsic functions are provided\nfor compatibility with *g77*, and their use in new code is\nstrongly discouraged.\n\n\n\n### Syntax\n`RESULT = AIMAG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the\nkind type parameter of the argument.\n\n\n\n### Example\n```\n\n\nprogram test_aimag\n\n  complex(4) z4\n\n  complex(8) z8\n\n  z4 = cmplx(1.e0_4, 0.e0_4)\n\n  z8 = cmplx(0.e0_8, 1.e0_8)\n\n  print *, aimag(z4), dimag(z8)\n\nend program test_aimag\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AIMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `DIMAG(Z)` | `COMPLEX(8) Z` | `REAL(8)` | GNU extension\n\n | `IMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `IMAGPART(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/AINT.json b/src/docs/AINT.json index 438fafdb..79b71d74 100644 --- a/src/docs/AINT.json +++ b/src/docs/AINT.json @@ -1,4 +1,4 @@ { - "keyword":"AINT", - "docstr":"`AINT` — Truncate to a whole number\n\n### Description\n`AINT(A [, KIND])` truncates its argument to a whole number.\n\n\n\n### Syntax\n`RESULT = AINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If the magnitude of\n`X` is less than one, `AINT(X)` returns zero. If the\nmagnitude is equal to or greater than one then it returns the largest\nwhole number that does not exceed its magnitude. The sign is the same\nas the sign of `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_aint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, aint(x4), dint(x8)\n\n  x8 = aint(x4,8)\n\nend program test_aint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "AINT", + "docstr": "`AINT` — Truncate to a whole number\n\n### Description\n`AINT(A [, KIND])` truncates its argument to a whole number.\n\n\n\n### Syntax\n`RESULT = AINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If the magnitude of\n`X` is less than one, `AINT(X)` returns zero. If the\nmagnitude is equal to or greater than one then it returns the largest\nwhole number that does not exceed its magnitude. The sign is the same\nas the sign of `X`.\n\n\n\n### Example\n```\n\n\nprogram test_aint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, aint(x4), dint(x8)\n\n  x8 = aint(x4,8)\n\nend program test_aint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ALARM.json b/src/docs/ALARM.json index fc4b64fa..03e6e2cc 100644 --- a/src/docs/ALARM.json +++ b/src/docs/ALARM.json @@ -1,4 +1,4 @@ { - "keyword":"ALARM", - "docstr":"`ALARM` — Execute a routine after a given delay\n\n### Description\n`ALARM(SECONDS, HANDLER [, STATUS])` causes external subroutine `HANDLER`\nto be executed after a delay of `SECONDS` by using `alarm(2)` to\nset up a signal and `signal(2)` to catch it. If `STATUS` is\nsupplied, it will be returned with the number of seconds remaining until\nany previously scheduled alarm was due to be delivered, or zero if there\nwas no previously scheduled alarm.\n\n\n\n### Syntax\n`CALL ALARM(SECONDS, HANDLER [, STATUS])`\n\n\n### Arguments\n\n \n | `SECONDS` | The type of the argument shall be a scalar\n`INTEGER`. It is `INTENT(IN)`. \n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. The scalar\nvalues may be either `SIG_IGN=1` to ignore the alarm generated\nor `SIG_DFL=0` to set the default action. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\nvariable of the default `INTEGER` kind. It is `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test_alarm\n\n  external handler_print\n\n  integer i\n\n  call alarm (3, handler_print, i)\n\n  print *, i\n\n  call sleep(10)\n\nend program test_alarm\n\n```\n\n \nThis will cause the external routine `handler_print` to be called\nafter 3 seconds. \n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "ALARM", + "docstr": "`ALARM` — Execute a routine after a given delay\n\n### Description\n`ALARM(SECONDS, HANDLER [, STATUS])` causes external subroutine `HANDLER`\nto be executed after a delay of `SECONDS` by using `alarm(2)` to\nset up a signal and `signal(2)` to catch it. If `STATUS` is\nsupplied, it will be returned with the number of seconds remaining until\nany previously scheduled alarm was due to be delivered, or zero if there\nwas no previously scheduled alarm.\n\n\n\n### Syntax\n`CALL ALARM(SECONDS, HANDLER [, STATUS])`\n\n\n### Arguments\n\n \n | `SECONDS` | The type of the argument shall be a scalar\n`INTEGER`. It is `INTENT(IN)`. \n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. The scalar\nvalues may be either `SIG_IGN=1` to ignore the alarm generated\nor `SIG_DFL=0` to set the default action. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\nvariable of the default `INTEGER` kind. It is `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_alarm\n\n  external handler_print\n\n  integer i\n\n  call alarm (3, handler_print, i)\n\n  print *, i\n\n  call sleep(10)\n\nend program test_alarm\n\n```\n\n \nThis will cause the external routine `handler_print` to be called\nafter 3 seconds. \n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/ALL.json b/src/docs/ALL.json index b6ae21a1..0ecdaf45 100644 --- a/src/docs/ALL.json +++ b/src/docs/ALL.json @@ -1,4 +1,4 @@ { - "keyword":"ALL", - "docstr":"`ALL` — All values in `MASK` along `DIM` are true\n\n### Description\n`ALL(MASK [, DIM])` determines if all the values are true in `MASK`\nin the array along dimension `DIM`.\n\n\n\n### Syntax\n`RESULT = ALL(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ALL(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ALL(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n
\n**(A)** `ALL(MASK)` is true if all elements of `MASK` are true. \nIt also is true if `MASK` has zero size; otherwise, it is false. \n\n**(B)** If the rank of `MASK` is one, then `ALL(MASK,DIM)` is equivalent\nto `ALL(MASK)`. If the rank is greater than one, then `ALL(MASK,DIM)`is determined by applying `ALL` to the array sections. \n\n
\n\n\n\n### Example\n\n ```\n\n\nprogram test_all\n\n  logical l\n\n  l = all((/.true., .true., .true./))\n\n  print *, l\n\n  call section\n\n  contains\n\n    subroutine section\n\n      integer a(2,3), b(2,3)\n\n      a = 1\n\n      b = 1\n\n      b(2,2) = 2\n\n      print *, all(a .eq. b, 1)\n\n      print *, all(a .eq. b, 2)\n\n    end subroutine section\n\nend program test_all\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "ALL", + "docstr": "`ALL` — All values in `MASK` along `DIM` are true\n\n### Description\n`ALL(MASK [, DIM])` determines if all the values are true in `MASK`\nin the array along dimension `DIM`.\n\n\n\n### Syntax\n`RESULT = ALL(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ALL(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ALL(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n
\n**(A)** `ALL(MASK)` is true if all elements of `MASK` are true. \nIt also is true if `MASK` has zero size; otherwise, it is false. \n\n**(B)** If the rank of `MASK` is one, then `ALL(MASK,DIM)` is equivalent\nto `ALL(MASK)`. If the rank is greater than one, then `ALL(MASK,DIM)`is determined by applying `ALL` to the array sections. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_all\n\n  logical l\n\n  l = all((/.true., .true., .true./))\n\n  print *, l\n\n  call section\n\n  contains\n\n    subroutine section\n\n      integer a(2,3), b(2,3)\n\n      a = 1\n\n      b = 1\n\n      b(2,2) = 2\n\n      print *, all(a .eq. b, 1)\n\n      print *, all(a .eq. b, 2)\n\n    end subroutine section\n\nend program test_all\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/ALLOCATED.json b/src/docs/ALLOCATED.json index 920c4924..892c76e5 100644 --- a/src/docs/ALLOCATED.json +++ b/src/docs/ALLOCATED.json @@ -1,4 +1,4 @@ { - "keyword":"ALLOCATED", - "docstr":"`ALLOCATED` — Status of an allocatable entity\n\n### Description\n`ALLOCATED(ARRAY)` and `ALLOCATED(SCALAR)` check the allocation\nstatus of `ARRAY` and `SCALAR`, respectively.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ALLOCATED(SCALAR)`
\n\n\n\n\n\n### Arguments\n\n \n array. \n\n | `SCALAR` | The argument shall be an `ALLOCATABLE` scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar `LOGICAL` with the default logical\nkind type parameter. If the argument is allocated, then the result is\n`.TRUE.`; otherwise, it returns `.FALSE.`\n\n\n### Example\n\n ```\n\n\nprogram test_allocated\n\n  integer :: i = 4\n\n  real(4), allocatable :: x(:)\n\n  if (.not. allocated(x)) allocate(x(i))\n\nend program test_allocated\n\n```\n\n \n\n### Standard\nFortran 95 and later. Note, the `SCALAR=` keyword and allocatable\nscalar entities are available in Fortran 2003 and later.\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "ALLOCATED", + "docstr": "`ALLOCATED` — Status of an allocatable entity\n\n### Description\n`ALLOCATED(ARRAY)` and `ALLOCATED(SCALAR)` check the allocation\nstatus of `ARRAY` and `SCALAR`, respectively.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ALLOCATED(SCALAR)`
\n\n\n\n\n\n### Arguments\n\n \n array. \n\n | `SCALAR` | The argument shall be an `ALLOCATABLE` scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar `LOGICAL` with the default logical\nkind type parameter. If the argument is allocated, then the result is\n`.TRUE.`; otherwise, it returns `.FALSE.`\n\n\n### Example\n```\n\n\nprogram test_allocated\n\n  integer :: i = 4\n\n  real(4), allocatable :: x(:)\n\n  if (.not. allocated(x)) allocate(x(i))\n\nend program test_allocated\n\n```\n\n \n\n### Standard\nFortran 95 and later. Note, the `SCALAR=` keyword and allocatable\nscalar entities are available in Fortran 2003 and later.\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/AND.json b/src/docs/AND.json index b1f3eeab..d07dc646 100644 --- a/src/docs/AND.json +++ b/src/docs/AND.json @@ -1,4 +1,4 @@ { - "keyword":"AND", - "docstr":"`AND` — Bitwise logical AND\n\n### Description\nBitwise logical `AND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IAND intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = AND(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_and\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) AND(T, T), AND(T, F), AND(F, T), AND(F, F)\n\n  WRITE (*,*) AND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IAND\n" -} \ No newline at end of file + "keyword": "AND", + "docstr": "`AND` — Bitwise logical AND\n\n### Description\nBitwise logical `AND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IAND intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = AND(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_and\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) AND(T, T), AND(T, F), AND(F, T), AND(F, F)\n\n  WRITE (*,*) AND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IAND\n" +} diff --git a/src/docs/ANINT.json b/src/docs/ANINT.json index af73b5b1..c12f1efc 100644 --- a/src/docs/ANINT.json +++ b/src/docs/ANINT.json @@ -1,4 +1,4 @@ { - "keyword":"ANINT", - "docstr":"`ANINT` — Nearest whole number\n\n### Description\n`ANINT(A [, KIND])` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = ANINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type real with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If `A` is greater than\nzero, `ANINT(A)` returns `AINT(X+0.5)`. If `A` is\nless than or equal to zero then it returns `AINT(X-0.5)`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_anint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, anint(x4), dnint(x8)\n\n  x8 = anint(x4,8)\n\nend program test_anint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DNINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ANINT", + "docstr": "`ANINT` — Nearest whole number\n\n### Description\n`ANINT(A [, KIND])` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = ANINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type real with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If `A` is greater than\nzero, `ANINT(A)` returns `AINT(X+0.5)`. If `A` is\nless than or equal to zero then it returns `AINT(X-0.5)`.\n\n\n\n### Example\n```\n\n\nprogram test_anint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, anint(x4), dnint(x8)\n\n  x8 = anint(x4,8)\n\nend program test_anint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DNINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ANY.json b/src/docs/ANY.json index 8709a969..136afca6 100644 --- a/src/docs/ANY.json +++ b/src/docs/ANY.json @@ -1,4 +1,4 @@ { - "keyword":"ANY", - "docstr":"`ANY` — Any value in `MASK` along `DIM` is true\n\n### Description\n`ANY(MASK [, DIM])` determines if any of the values in the logical array\n`MASK` along dimension `DIM` are `.TRUE.`.\n\n\n\n### Syntax\n`RESULT = ANY(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ANY(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ANY(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n
\n**(A)** `ANY(MASK)` is true if any element of `MASK` is true;\notherwise, it is false. It also is false if `MASK` has zero size. \n\n**(B)** If the rank of `MASK` is one, then `ANY(MASK,DIM)` is equivalent\nto `ANY(MASK)`. If the rank is greater than one, then `ANY(MASK,DIM)`is determined by applying `ANY` to the array sections. \n\n
\n\n\n\n### Example\n\n ```\n\n\nprogram test_any\n\n  logical l\n\n  l = any((/.true., .true., .true./))\n\n  print *, l\n\n  call section\n\n  contains\n\n    subroutine section\n\n      integer a(2,3), b(2,3)\n\n      a = 1\n\n      b = 1\n\n      b(2,2) = 2\n\n      print *, any(a .eq. b, 1)\n\n      print *, any(a .eq. b, 2)\n\n    end subroutine section\n\nend program test_any\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "ANY", + "docstr": "`ANY` — Any value in `MASK` along `DIM` is true\n\n### Description\n`ANY(MASK [, DIM])` determines if any of the values in the logical array\n`MASK` along dimension `DIM` are `.TRUE.`.\n\n\n\n### Syntax\n`RESULT = ANY(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ANY(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ANY(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n
\n**(A)** `ANY(MASK)` is true if any element of `MASK` is true;\notherwise, it is false. It also is false if `MASK` has zero size. \n\n**(B)** If the rank of `MASK` is one, then `ANY(MASK,DIM)` is equivalent\nto `ANY(MASK)`. If the rank is greater than one, then `ANY(MASK,DIM)`is determined by applying `ANY` to the array sections. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_any\n\n  logical l\n\n  l = any((/.true., .true., .true./))\n\n  print *, l\n\n  call section\n\n  contains\n\n    subroutine section\n\n      integer a(2,3), b(2,3)\n\n      a = 1\n\n      b = 1\n\n      b(2,2) = 2\n\n      print *, any(a .eq. b, 1)\n\n      print *, any(a .eq. b, 2)\n\n    end subroutine section\n\nend program test_any\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/ASIN.json b/src/docs/ASIN.json index a8a3c8fe..c5d7a7b3 100644 --- a/src/docs/ASIN.json +++ b/src/docs/ASIN.json @@ -1,4 +1,4 @@ { - "keyword":"ASIN", - "docstr":"`ASIN` — Arcsine function\n\n### Description\n`ASIN(X)` computes the arcsine of its `X` (inverse of `SIN(X)`).\n\n\n\n### Syntax\n`RESULT = ASIN(X)`\n\n\n### Arguments\n\n \n and a magnitude that is\nless than or equal to one - or be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\asin(x) \\leq \\pi/2.\n\n\n\n### Example\n\n ```\n\n\nprogram test_asin\n\n  real(8) :: x = 0.866_8\n\n  x = asin(x)\n\nend program test_asin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ASIN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DASIN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SIN\n\n " -} \ No newline at end of file + "keyword": "ASIN", + "docstr": "`ASIN` — Arcsine function\n\n### Description\n`ASIN(X)` computes the arcsine of its `X` (inverse of `SIN(X)`).\n\n\n\n### Syntax\n`RESULT = ASIN(X)`\n\n\n### Arguments\n\n \n and a magnitude that is\nless than or equal to one - or be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\asin(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_asin\n\n  real(8) :: x = 0.866_8\n\n  x = asin(x)\n\nend program test_asin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ASIN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DASIN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SIN\n\n " +} diff --git a/src/docs/ASIND.json b/src/docs/ASIND.json index d09a7763..a7f39c9d 100644 --- a/src/docs/ASIND.json +++ b/src/docs/ASIND.json @@ -1,4 +1,4 @@ { - "keyword":"ASIND", - "docstr":"`ASIND` — Arcsine function, degrees\n\n### Description\nASIND(X) computes the arcsine of its X in degrees (inverse of SIND(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ASIND(X)\n### Arguments\n- X: The type shall be either REAL and a magnitude that is less than or equal to one - or be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range -90 \\leq \\Re \\asin(x) \\leq 90.\n" -} \ No newline at end of file + "keyword": "ASIND", + "docstr": "`ASIND` — Arcsine function, degrees\n\n### Description\nASIND(X) computes the arcsine of its X in degrees (inverse of SIND(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ASIND(X)\n### Arguments\n- X: The type shall be either REAL and a magnitude that is less than or equal to one - or be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range -90 \\leq \\Re \\asin(x) \\leq 90.\n" +} diff --git a/src/docs/ASINH.json b/src/docs/ASINH.json index aebe7aca..45700d77 100644 --- a/src/docs/ASINH.json +++ b/src/docs/ASINH.json @@ -1,4 +1,4 @@ { - "keyword":"ASINH", - "docstr":"`ASINH` — Inverse hyperbolic sine function\n\n### Description\n`ASINH(X)` computes the inverse hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = ASINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\asinh(x) \\leq \\pi/2.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_asinh\n\n  REAL(8), DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n  WRITE (*,*) ASINH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DASINH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension.\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SINH\n" -} \ No newline at end of file + "keyword": "ASINH", + "docstr": "`ASINH` — Inverse hyperbolic sine function\n\n### Description\n`ASINH(X)` computes the inverse hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = ASINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\asinh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_asinh\n\n  REAL(8), DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n  WRITE (*,*) ASINH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DASINH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension.\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SINH\n" +} diff --git a/src/docs/ASSOCIATED.json b/src/docs/ASSOCIATED.json index 32b1648e..83e2aae2 100644 --- a/src/docs/ASSOCIATED.json +++ b/src/docs/ASSOCIATED.json @@ -1,4 +1,4 @@ { - "keyword":"ASSOCIATED", - "docstr":"`ASSOCIATED` — Status of a pointer or pointer/target pair\n\n### Description\n`ASSOCIATED(POINTER [, TARGET])` determines the status of the pointer\n`POINTER` or if `POINTER` is associated with the target `TARGET`.\n\n\n\n### Syntax\n`RESULT = ASSOCIATED(POINTER [, TARGET])`\n\n\n### Arguments\n\n \n attribute\nand it can be of any type. \n\n | `TARGET` | (Optional) `TARGET` shall be a pointer or\na target. It must have the same type, kind type parameter, and\narray rank as `POINTER`.\n\n\nThe association status of neither `POINTER` nor `TARGET` shall be\nundefined.\n\n\n\n\n### Return value\n`ASSOCIATED(POINTER)` returns a scalar value of type `LOGICAL(4)`. \nThere are several cases:\n
\n**(A) When the optional `TARGET` is not present then** `ASSOCIATED(POINTER)` is true if `POINTER` is associated with a target; otherwise, it returns false. \n\n**(B) If `TARGET` is present and a scalar target, the result is true if** `TARGET` is not a zero-sized storage sequence and the target associated with `POINTER` occupies the same storage units. If `POINTER` is\ndisassociated, the result is false. \n\n**(C) If `TARGET` is present and an array target, the result is true if** `TARGET` and `POINTER` have the same shape, are not zero-sized arrays,\nare arrays whose elements are not zero-sized storage sequences, and\n`TARGET` and `POINTER` occupy the same storage units in array element\norder. \nAs in case(B), the result is false, if `POINTER` is disassociated. \n\n**(D) If `TARGET` is present and an scalar pointer, the result is true** if `TARGET` is associated with `POINTER`, the target associated with\n`TARGET` are not zero-sized storage sequences and occupy the same storage\nunits. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n**(E) If `TARGET` is present and an array pointer, the result is true if** target associated with `POINTER` and the target associated with `TARGET`\nhave the same shape, are not zero-sized arrays, are arrays whose elements are\nnot zero-sized storage sequences, and `TARGET` and `POINTER` occupy\nthe same storage units in array element order. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n
\n\n\n\n### Example\n\n ```\n\n\nprogram test_associated\n\n   implicit none\n\n   real, target :: tgt(2) = (/1., 2./)\n\n   real, pointer :: ptr(:)\n\n   ptr => tgt\n\n   if (associated(ptr) .eqv. .false.) call abort\n\n   if (associated(ptr,tgt) .eqv. .false.) call abort\n\nend program test_associated\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nNULL\n" -} \ No newline at end of file + "keyword": "ASSOCIATED", + "docstr": "`ASSOCIATED` — Status of a pointer or pointer/target pair\n\n### Description\n`ASSOCIATED(POINTER [, TARGET])` determines the status of the pointer\n`POINTER` or if `POINTER` is associated with the target `TARGET`.\n\n\n\n### Syntax\n`RESULT = ASSOCIATED(POINTER [, TARGET])`\n\n\n### Arguments\n\n \n attribute\nand it can be of any type. \n\n | `TARGET` | (Optional) `TARGET` shall be a pointer or\na target. It must have the same type, kind type parameter, and\narray rank as `POINTER`.\n\n\nThe association status of neither `POINTER` nor `TARGET` shall be\nundefined.\n\n\n\n\n### Return value\n`ASSOCIATED(POINTER)` returns a scalar value of type `LOGICAL(4)`. \nThere are several cases:\n
\n**(A) When the optional `TARGET` is not present then** `ASSOCIATED(POINTER)` is true if `POINTER` is associated with a target; otherwise, it returns false. \n\n**(B) If `TARGET` is present and a scalar target, the result is true if** `TARGET` is not a zero-sized storage sequence and the target associated with `POINTER` occupies the same storage units. If `POINTER` is\ndisassociated, the result is false. \n\n**(C) If `TARGET` is present and an array target, the result is true if** `TARGET` and `POINTER` have the same shape, are not zero-sized arrays,\nare arrays whose elements are not zero-sized storage sequences, and\n`TARGET` and `POINTER` occupy the same storage units in array element\norder. \nAs in case(B), the result is false, if `POINTER` is disassociated. \n\n**(D) If `TARGET` is present and an scalar pointer, the result is true** if `TARGET` is associated with `POINTER`, the target associated with\n`TARGET` are not zero-sized storage sequences and occupy the same storage\nunits. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n**(E) If `TARGET` is present and an array pointer, the result is true if** target associated with `POINTER` and the target associated with `TARGET`\nhave the same shape, are not zero-sized arrays, are arrays whose elements are\nnot zero-sized storage sequences, and `TARGET` and `POINTER` occupy\nthe same storage units in array element order. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_associated\n\n   implicit none\n\n   real, target :: tgt(2) = (/1., 2./)\n\n   real, pointer :: ptr(:)\n\n   ptr => tgt\n\n   if (associated(ptr) .eqv. .false.) call abort\n\n   if (associated(ptr,tgt) .eqv. .false.) call abort\n\nend program test_associated\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nNULL\n" +} diff --git a/src/docs/ATAN.json b/src/docs/ATAN.json index 79551eda..0c42e003 100644 --- a/src/docs/ATAN.json +++ b/src/docs/ATAN.json @@ -1,4 +1,4 @@ { - "keyword":"ATAN", - "docstr":"`ATAN` — Arctangent function\n\n### Description\n`ATAN(X)` computes the arctangent of `X`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ATAN(Y, X)`
\n\n\n\n\n\n### Arguments\n\n \n;\nif `Y` is present, `X` shall be REAL. \n\n | `Y` shall be of the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIf `Y` is present, the result is identical to `ATAN2(Y,X)`. \nOtherwise, it the arcus tangent of `X`, where the real part of\nthe result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\atan(x) \\leq \\pi/2.\n\n\n\n### Example\n\n ```\n\n\nprogram test_atan\n\n  real(8) :: x = 2.866_8\n\n  x = atan(x)\n\nend program test_atan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument and for two arguments\nFortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TAN\n\n " -} \ No newline at end of file + "keyword": "ATAN", + "docstr": "`ATAN` — Arctangent function\n\n### Description\n`ATAN(X)` computes the arctangent of `X`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ATAN(Y, X)`
\n\n\n\n\n\n### Arguments\n\n \n;\nif `Y` is present, `X` shall be REAL. \n\n | `Y` shall be of the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIf `Y` is present, the result is identical to `ATAN2(Y,X)`. \nOtherwise, it the arcus tangent of `X`, where the real part of\nthe result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\atan(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan\n\n  real(8) :: x = 2.866_8\n\n  x = atan(x)\n\nend program test_atan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument and for two arguments\nFortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TAN\n\n " +} diff --git a/src/docs/ATAN2.json b/src/docs/ATAN2.json index 1971744c..2badc071 100644 --- a/src/docs/ATAN2.json +++ b/src/docs/ATAN2.json @@ -1,4 +1,4 @@ { - "keyword":"ATAN2", - "docstr":"`ATAN2` — Arctangent function\n\n### Description\n`ATAN2(Y, X)` computes the principal value of the argument\nfunction of the complex number X + i Y. This function can\nbe used to transform from Cartesian into polar coordinates and\nallows to determine the angle in the correct quadrant.\n\n\n\n### Syntax\n`RESULT = ATAN2(Y, X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | The type and kind type parameter shall be the same as `Y`. \nIf `Y` is zero, then `X` must be nonzero.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `Y`. It\nis the principal value of the complex number X + i Y. If `X`\nis nonzero, then it lies in the range -\\pi \\le \\atan (x) \\leq \\pi. \nThe sign is positive if `Y` is positive. If `Y` is zero, then\nthe return value is zero if `X` is strictly positive, \\pi if\n`X` is negative and `Y` is positive zero (or the processor does\nnot handle signed zeros), and -\\pi if `X` is negative and\n`Y` is negative zero. Finally, if `X` is zero, then the\nmagnitude of the result is \\pi/2.\n\n\n\n### Example\n\n ```\n\n\nprogram test_atan2\n\n  real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n  x = atan2(y,x)\n\nend program test_atan2\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN2(X, Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN2(X, Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ATAN2", + "docstr": "`ATAN2` — Arctangent function\n\n### Description\n`ATAN2(Y, X)` computes the principal value of the argument\nfunction of the complex number X + i Y. This function can\nbe used to transform from Cartesian into polar coordinates and\nallows to determine the angle in the correct quadrant.\n\n\n\n### Syntax\n`RESULT = ATAN2(Y, X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | The type and kind type parameter shall be the same as `Y`. \nIf `Y` is zero, then `X` must be nonzero.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `Y`. It\nis the principal value of the complex number X + i Y. If `X`\nis nonzero, then it lies in the range -\\pi \\le \\atan (x) \\leq \\pi. \nThe sign is positive if `Y` is positive. If `Y` is zero, then\nthe return value is zero if `X` is strictly positive, \\pi if\n`X` is negative and `Y` is positive zero (or the processor does\nnot handle signed zeros), and -\\pi if `X` is negative and\n`Y` is negative zero. Finally, if `X` is zero, then the\nmagnitude of the result is \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan2\n\n  real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n  x = atan2(y,x)\n\nend program test_atan2\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN2(X, Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN2(X, Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ATAN2D.json b/src/docs/ATAN2D.json index 84af43bc..4627ae8b 100644 --- a/src/docs/ATAN2D.json +++ b/src/docs/ATAN2D.json @@ -1,4 +1,4 @@ { - "keyword":"ATAN2D", - "docstr":"`ATAN2D` — Arctangent function, degrees\n\n### Description\nATAN2D(Y, X) computes the principal value of the argument function of the complex number X + i Y in degrees. This function can be used to transform from Cartesian into polar coordinates and allows to determine the angle in the correct quadrant.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAN2D(Y, X)\n### Arguments\n- Y: The type shall be REAL.\n- X: The type and kind type parameter shall be the same as Y. If Y is zero, then X must be nonzero.\n### Return value\nThe return value has the same type and kind type parameter as Y. It is the principal value of the complex number X + i Y. If X is nonzero, then it lies in the range -180 \\le \\atan (x) \\leq 180. The sign is positive if Y is positive. If Y is zero, then the return value is zero if X is strictly positive, 180 if X is negative and Y is positive zero (or the processor does not handle signed zeros), and -180 if X is negative and Y is negative zero. Finally, if X is zero, then the magnitude of the result is 90.\n" -} \ No newline at end of file + "keyword": "ATAN2D", + "docstr": "`ATAN2D` — Arctangent function, degrees\n\n### Description\nATAN2D(Y, X) computes the principal value of the argument function of the complex number X + i Y in degrees. This function can be used to transform from Cartesian into polar coordinates and allows to determine the angle in the correct quadrant.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAN2D(Y, X)\n### Arguments\n- Y: The type shall be REAL.\n- X: The type and kind type parameter shall be the same as Y. If Y is zero, then X must be nonzero.\n### Return value\nThe return value has the same type and kind type parameter as Y. It is the principal value of the complex number X + i Y. If X is nonzero, then it lies in the range -180 \\le \\atan (x) \\leq 180. The sign is positive if Y is positive. If Y is zero, then the return value is zero if X is strictly positive, 180 if X is negative and Y is positive zero (or the processor does not handle signed zeros), and -180 if X is negative and Y is negative zero. Finally, if X is zero, then the magnitude of the result is 90.\n" +} diff --git a/src/docs/ATAND.json b/src/docs/ATAND.json index 53c77426..b2e15f4b 100644 --- a/src/docs/ATAND.json +++ b/src/docs/ATAND.json @@ -1,4 +1,4 @@ { - "keyword":"ATAND", - "docstr":"`ATAND` — Arctangent function, degrees\n\n### Description\nATAND(X) computes the arctangent of X in degrees (inverse of TAND).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAND(X)\nRESULT = ATAND(Y, X)\n### Arguments\n- X: The type shall be REAL or COMPLEX; if Y is present, X shall be REAL.- Y: Shall be of the same type and kind as X.\n### Return value\nThe return value is of the same type and kind as X. If Y is present, the result is identical to ATAND2(Y,X). Otherwise, it is the arcus tangent of X, where the real part of the result is in degrees and lies in the range -90 \\leq \\Re \\atand(x) \\leq 90." -} \ No newline at end of file + "keyword": "ATAND", + "docstr": "`ATAND` — Arctangent function, degrees\n\n### Description\nATAND(X) computes the arctangent of X in degrees (inverse of TAND).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAND(X)\nRESULT = ATAND(Y, X)\n### Arguments\n- X: The type shall be REAL or COMPLEX; if Y is present, X shall be REAL.- Y: Shall be of the same type and kind as X.\n### Return value\nThe return value is of the same type and kind as X. If Y is present, the result is identical to ATAND2(Y,X). Otherwise, it is the arcus tangent of X, where the real part of the result is in degrees and lies in the range -90 \\leq \\Re \\atand(x) \\leq 90." +} diff --git a/src/docs/ATANH.json b/src/docs/ATANH.json index 897505d2..da8c9c5e 100644 --- a/src/docs/ATANH.json +++ b/src/docs/ATANH.json @@ -1,4 +1,4 @@ { - "keyword":"ATANH", - "docstr":"`ATANH` — Inverse hyperbolic tangent function\n\n### Description\n`ATANH(X)` computes the inverse hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`RESULT = ATANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\atanh(x) \\leq \\pi/2.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_atanh\n\n  REAL, DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n  WRITE (*,*) ATANH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DATANH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TANH\n" -} \ No newline at end of file + "keyword": "ATANH", + "docstr": "`ATANH` — Inverse hyperbolic tangent function\n\n### Description\n`ATANH(X)` computes the inverse hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`RESULT = ATANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\atanh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_atanh\n\n  REAL, DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n  WRITE (*,*) ATANH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DATANH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TANH\n" +} diff --git a/src/docs/ATOMIC_ADD.json b/src/docs/ATOMIC_ADD.json index 5b1b4b88..b8114daa 100644 --- a/src/docs/ATOMIC_ADD.json +++ b/src/docs/ATOMIC_ADD.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_ADD", - "docstr":"`ATOMIC_ADD` — Atomic ADD operation\n\n### Description\n`ATOMIC_ADD(ATOM, VALUE)` atomically adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_ADD (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_add (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_ADD, ISO_FORTRAN_ENV,\nATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_ADD", + "docstr": "`ATOMIC_ADD` — Atomic ADD operation\n\n### Description\n`ATOMIC_ADD(ATOM, VALUE)` atomically adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_ADD (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_add (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_ADD, ISO_FORTRAN_ENV,\nATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n" +} diff --git a/src/docs/ATOMIC_AND.json b/src/docs/ATOMIC_AND.json index 06d6cd77..c5873963 100644 --- a/src/docs/ATOMIC_AND.json +++ b/src/docs/ATOMIC_AND.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_AND", - "docstr":"`ATOMIC_AND` — Atomic bitwise AND operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_AND (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_and (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_AND, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_AND", + "docstr": "`ATOMIC_AND` — Atomic bitwise AND operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_AND (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_and (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_AND, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" +} diff --git a/src/docs/ATOMIC_CAS.json b/src/docs/ATOMIC_CAS.json index ba116ae3..2598f2dd 100644 --- a/src/docs/ATOMIC_CAS.json +++ b/src/docs/ATOMIC_CAS.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_CAS", - "docstr":"`ATOMIC_CAS` — Atomic compare and swap\n\n### Description\n`ATOMIC_CAS` compares the variable `ATOM` with the value of\n`COMPARE`; if the value is the same, `ATOM` is set to the value\nof `NEW`. Additionally, `OLD` is set to the value of `ATOM`\nthat was used for the comparison. When `STAT` is present and the invokation\nwas successful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `COMPARE` | Scalar variable of the same type and kind as\n`ATOM`. \n\n | `NEW` | Scalar variable of the same type as `ATOM`. If kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  logical(atomic_logical_kind) :: atom[*], prev\n\n  call atomic_cas (atom[1], prev, .false., .true.))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_REF, ISO_FORTRAN_ENV\n" -} \ No newline at end of file + "keyword": "ATOMIC_CAS", + "docstr": "`ATOMIC_CAS` — Atomic compare and swap\n\n### Description\n`ATOMIC_CAS` compares the variable `ATOM` with the value of\n`COMPARE`; if the value is the same, `ATOM` is set to the value\nof `NEW`. Additionally, `OLD` is set to the value of `ATOM`\nthat was used for the comparison. When `STAT` is present and the invokation\nwas successful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `COMPARE` | Scalar variable of the same type and kind as\n`ATOM`. \n\n | `NEW` | Scalar variable of the same type as `ATOM`. If kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  logical(atomic_logical_kind) :: atom[*], prev\n\n  call atomic_cas (atom[1], prev, .false., .true.))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_REF, ISO_FORTRAN_ENV\n" +} diff --git a/src/docs/ATOMIC_DEFINE.json b/src/docs/ATOMIC_DEFINE.json index 95d03021..aa074608 100644 --- a/src/docs/ATOMIC_DEFINE.json +++ b/src/docs/ATOMIC_DEFINE.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_DEFINE", - "docstr":"`ATOMIC_DEFINE` — Setting a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` defines the variable `ATOM` with the value\n`VALUE` atomically. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_define (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_REF, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_DEFINE", + "docstr": "`ATOMIC_DEFINE` — Setting a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` defines the variable `ATOM` with the value\n`VALUE` atomically. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_define (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_REF, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n" +} diff --git a/src/docs/ATOMIC_FETCH_ADD.json b/src/docs/ATOMIC_FETCH_ADD.json index 4d096970..6bb2da52 100644 --- a/src/docs/ATOMIC_FETCH_ADD.json +++ b/src/docs/ATOMIC_FETCH_ADD.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_FETCH_ADD", - "docstr":"`ATOMIC_FETCH_ADD` — Atomic ADD operation with prior fetch\n\n### Description\n`ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)` atomically stores the value of\n`ATOM` in `OLD` and adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_ADD (ATOM, VALUE, old [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_add (atom[1], this_image(), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_ADD, ISO_FORTRAN_ENV,\nATOMIC_FETCH_AND, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_FETCH_ADD", + "docstr": "`ATOMIC_FETCH_ADD` — Atomic ADD operation with prior fetch\n\n### Description\n`ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)` atomically stores the value of\n`ATOM` in `OLD` and adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_ADD (ATOM, VALUE, old [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_add (atom[1], this_image(), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_ADD, ISO_FORTRAN_ENV,\nATOMIC_FETCH_AND, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n" +} diff --git a/src/docs/ATOMIC_FETCH_AND.json b/src/docs/ATOMIC_FETCH_AND.json index 7f16964d..eddac75d 100644 --- a/src/docs/ATOMIC_FETCH_AND.json +++ b/src/docs/ATOMIC_FETCH_AND.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_FETCH_AND", - "docstr":"`ATOMIC_FETCH_AND` — Atomic bitwise AND operation with prior fetch\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise AND between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_and (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_AND, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_FETCH_AND", + "docstr": "`ATOMIC_FETCH_AND` — Atomic bitwise AND operation with prior fetch\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise AND between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_and (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_AND, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n" +} diff --git a/src/docs/ATOMIC_FETCH_OR.json b/src/docs/ATOMIC_FETCH_OR.json index d6095998..74279036 100644 --- a/src/docs/ATOMIC_FETCH_OR.json +++ b/src/docs/ATOMIC_FETCH_OR.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_FETCH_OR", - "docstr":"`ATOMIC_FETCH_OR` — Atomic bitwise OR operation with prior fetch\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise OR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_or (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_OR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_FETCH_OR", + "docstr": "`ATOMIC_FETCH_OR` — Atomic bitwise OR operation with prior fetch\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise OR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_or (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_OR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_XOR\n" +} diff --git a/src/docs/ATOMIC_FETCH_XOR.json b/src/docs/ATOMIC_FETCH_XOR.json index c4d1e883..0e992125 100644 --- a/src/docs/ATOMIC_FETCH_XOR.json +++ b/src/docs/ATOMIC_FETCH_XOR.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_FETCH_XOR", - "docstr":"`ATOMIC_FETCH_XOR` — Atomic bitwise XOR operation with prior fetch\n\n### Description\n`ATOMIC_XOR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise XOR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_xor (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_XOR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR\n" -} \ No newline at end of file + "keyword": "ATOMIC_FETCH_XOR", + "docstr": "`ATOMIC_FETCH_XOR` — Atomic bitwise XOR operation with prior fetch\n\n### Description\n`ATOMIC_XOR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise XOR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*], old\n\n  call atomic_fetch_xor (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_XOR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR\n" +} diff --git a/src/docs/ATOMIC_OR.json b/src/docs/ATOMIC_OR.json index 46006aef..5caad138 100644 --- a/src/docs/ATOMIC_OR.json +++ b/src/docs/ATOMIC_OR.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_OR", - "docstr":"`ATOMIC_OR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_OR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_or (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_OR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_OR", + "docstr": "`ATOMIC_OR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_OR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_or (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_OR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" +} diff --git a/src/docs/ATOMIC_REF.json b/src/docs/ATOMIC_REF.json index 41aa2941..013a3451 100644 --- a/src/docs/ATOMIC_REF.json +++ b/src/docs/ATOMIC_REF.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_REF", - "docstr":"`ATOMIC_REF` — Obtaining the value of a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` atomically assigns the value of the\nvariable `ATOM` to `VALUE`. When `STAT` is present and the\ninvokation was successful, it is assigned the value 0. If it is present and the\ninvokation has failed, it is assigned a positive value; in particular, for a\ncoindexed `ATOM`, if the remote image has stopped, it is assigned the value\nof `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image\nhas failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_REF(VALUE, ATOM [, STAT])`\n\n\n### Arguments\n\n \n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  logical(atomic_logical_kind) :: atom[*]\n\n  logical :: val\n\n  call atomic_ref (atom, .false.)\n\n  ! ...\n\n  call atomic_ref (atom, val)\n\n  if (val) then\n\n    print *, \"Obtained\"\n\n  end if\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR,\nATOMIC_FETCH_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_REF", + "docstr": "`ATOMIC_REF` — Obtaining the value of a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` atomically assigns the value of the\nvariable `ATOM` to `VALUE`. When `STAT` is present and the\ninvokation was successful, it is assigned the value 0. If it is present and the\ninvokation has failed, it is assigned a positive value; in particular, for a\ncoindexed `ATOM`, if the remote image has stopped, it is assigned the value\nof `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image\nhas failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_REF(VALUE, ATOM [, STAT])`\n\n\n### Arguments\n\n \n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  logical(atomic_logical_kind) :: atom[*]\n\n  logical :: val\n\n  call atomic_ref (atom, .false.)\n\n  ! ...\n\n  call atomic_ref (atom, val)\n\n  if (val) then\n\n    print *, \"Obtained\"\n\n  end if\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR,\nATOMIC_FETCH_XOR\n" +} diff --git a/src/docs/ATOMIC_XOR.json b/src/docs/ATOMIC_XOR.json index f0134a96..7ada3e9e 100644 --- a/src/docs/ATOMIC_XOR.json +++ b/src/docs/ATOMIC_XOR.json @@ -1,4 +1,4 @@ { - "keyword":"ATOMIC_XOR", - "docstr":"`ATOMIC_XOR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nXOR between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_XOR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_xor (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_XOR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" -} \ No newline at end of file + "keyword": "ATOMIC_XOR", + "docstr": "`ATOMIC_XOR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nXOR between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_XOR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  integer(atomic_int_kind) :: atom[*]\n\n  call atomic_xor (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_XOR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n" +} diff --git a/src/docs/BACKTRACE.json b/src/docs/BACKTRACE.json index cd68575f..c2112557 100644 --- a/src/docs/BACKTRACE.json +++ b/src/docs/BACKTRACE.json @@ -1,4 +1,4 @@ { - "keyword":"BACKTRACE", - "docstr":"`BACKTRACE` — Show a backtrace\n\n### Description\n`BACKTRACE` shows a backtrace at an arbitrary place in user code. Program\nexecution continues normally afterwards. The backtrace information is printed\nto the unit corresponding to `ERROR_UNIT` in `ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`CALL BACKTRACE`\n\n\n### Arguments\nNone\n\n\n\n### Standard\nGNU Extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT\n" -} \ No newline at end of file + "keyword": "BACKTRACE", + "docstr": "`BACKTRACE` — Show a backtrace\n\n### Description\n`BACKTRACE` shows a backtrace at an arbitrary place in user code. Program\nexecution continues normally afterwards. The backtrace information is printed\nto the unit corresponding to `ERROR_UNIT` in `ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`CALL BACKTRACE`\n\n\n### Arguments\nNone\n\n\n\n### Standard\nGNU Extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT\n" +} diff --git a/src/docs/BESSEL_J0.json b/src/docs/BESSEL_J0.json index 48471d26..717e1551 100644 --- a/src/docs/BESSEL_J0.json +++ b/src/docs/BESSEL_J0.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_J0", - "docstr":"`BESSEL_J0` — Bessel function of the first kind of order 0\n\n### Description\n`BESSEL_J0(X)` computes the Bessel function of the first kind of\norder 0 of `X`. This function is available under the name\n`BESJ0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.4027... \\leq Bessel (0,x) \\leq 1. It has the same\nkind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besj0\n\n  real(8) :: x = 0.0_8\n\n  x = bessel_j0(x)\n\nend program test_besj0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "BESSEL_J0", + "docstr": "`BESSEL_J0` — Bessel function of the first kind of order 0\n\n### Description\n`BESSEL_J0(X)` computes the Bessel function of the first kind of\norder 0 of `X`. This function is available under the name\n`BESJ0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.4027... \\leq Bessel (0,x) \\leq 1. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj0\n\n  real(8) :: x = 0.0_8\n\n  x = bessel_j0(x)\n\nend program test_besj0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/BESSEL_J1.json b/src/docs/BESSEL_J1.json index d4242460..86812b61 100644 --- a/src/docs/BESSEL_J1.json +++ b/src/docs/BESSEL_J1.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_J1", - "docstr":"`BESSEL_J1` — Bessel function of the first kind of order 1\n\n### Description\n`BESSEL_J1(X)` computes the Bessel function of the first kind of\norder 1 of `X`. This function is available under the name\n`BESJ1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.5818... \\leq Bessel (0,x) \\leq 0.5818 . It has the same\nkind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besj1\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_j1(x)\n\nend program test_besj1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "BESSEL_J1", + "docstr": "`BESSEL_J1` — Bessel function of the first kind of order 1\n\n### Description\n`BESSEL_J1(X)` computes the Bessel function of the first kind of\norder 1 of `X`. This function is available under the name\n`BESJ1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.5818... \\leq Bessel (0,x) \\leq 0.5818 . It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj1\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_j1(x)\n\nend program test_besj1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/BESSEL_JN.json b/src/docs/BESSEL_JN.json index 26022f6c..d475df2b 100644 --- a/src/docs/BESSEL_JN.json +++ b/src/docs/BESSEL_JN.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_JN", - "docstr":"`BESSEL_JN` — Bessel function of the first kind\n\n### Description\n`BESSEL_JN(N, X)` computes the Bessel function of the first kind of\norder `N` of `X`. This function is available under the name\n`BESJN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_JN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_JN(N1, N2, X)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_JN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besjn\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_jn(5,x)\n\nend program test_besjn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJN(N, X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | `REAL(8) X` | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_JN(N1, N2, X)`\n\n" -} \ No newline at end of file + "keyword": "BESSEL_JN", + "docstr": "`BESSEL_JN` — Bessel function of the first kind\n\n### Description\n`BESSEL_JN(N, X)` computes the Bessel function of the first kind of\norder `N` of `X`. This function is available under the name\n`BESJN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_JN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_JN(N1, N2, X)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_JN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besjn\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_jn(5,x)\n\nend program test_besjn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJN(N, X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | `REAL(8) X` | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_JN(N1, N2, X)`\n\n" +} diff --git a/src/docs/BESSEL_Y0.json b/src/docs/BESSEL_Y0.json index 57c55c65..507b3340 100644 --- a/src/docs/BESSEL_Y0.json +++ b/src/docs/BESSEL_Y0.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_Y0", - "docstr":"`BESSEL_Y0` — Bessel function of the second kind of order 0\n\n### Description\n`BESSEL_Y0(X)` computes the Bessel function of the second kind of\norder 0 of `X`. This function is available under the name\n`BESY0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besy0\n\n  real(8) :: x = 0.0_8\n\n  x = bessel_y0(x)\n\nend program test_besy0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "BESSEL_Y0", + "docstr": "`BESSEL_Y0` — Bessel function of the second kind of order 0\n\n### Description\n`BESSEL_Y0(X)` computes the Bessel function of the second kind of\norder 0 of `X`. This function is available under the name\n`BESY0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy0\n\n  real(8) :: x = 0.0_8\n\n  x = bessel_y0(x)\n\nend program test_besy0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/BESSEL_Y1.json b/src/docs/BESSEL_Y1.json index 800dea3b..b7ac7622 100644 --- a/src/docs/BESSEL_Y1.json +++ b/src/docs/BESSEL_Y1.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_Y1", - "docstr":"`BESSEL_Y1` — Bessel function of the second kind of order 1\n\n### Description\n`BESSEL_Y1(X)` computes the Bessel function of the second kind of\norder 1 of `X`. This function is available under the name\n`BESY1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besy1\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_y1(x)\n\nend program test_besy1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "BESSEL_Y1", + "docstr": "`BESSEL_Y1` — Bessel function of the second kind of order 1\n\n### Description\n`BESSEL_Y1(X)` computes the Bessel function of the second kind of\norder 1 of `X`. This function is available under the name\n`BESY1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy1\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_y1(x)\n\nend program test_besy1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/BESSEL_YN.json b/src/docs/BESSEL_YN.json index 86ad26ef..91d9bd42 100644 --- a/src/docs/BESSEL_YN.json +++ b/src/docs/BESSEL_YN.json @@ -1,4 +1,4 @@ { - "keyword":"BESSEL_YN", - "docstr":"`BESSEL_YN` — Bessel function of the second kind\n\n### Description\n`BESSEL_YN(N, X)` computes the Bessel function of the second kind of\norder `N` of `X`. This function is available under the name\n`BESYN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_YN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_YN(N1, N2, X)`
\n\n\n\n\n\n### Arguments\n\n \n . \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_YN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_besyn\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_yn(5,x)\n\nend program test_besyn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESYN(N,X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | `REAL(8) X` | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_YN(N1, N2, X)`\n\n" -} \ No newline at end of file + "keyword": "BESSEL_YN", + "docstr": "`BESSEL_YN` — Bessel function of the second kind\n\n### Description\n`BESSEL_YN(N, X)` computes the Bessel function of the second kind of\norder `N` of `X`. This function is available under the name\n`BESYN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_YN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_YN(N1, N2, X)`
\n\n\n\n\n\n### Arguments\n\n \n . \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_YN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besyn\n\n  real(8) :: x = 1.0_8\n\n  x = bessel_yn(5,x)\n\nend program test_besyn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESYN(N,X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | `REAL(8) X` | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_YN(N1, N2, X)`\n\n" +} diff --git a/src/docs/BGE.json b/src/docs/BGE.json index bab7aae7..eb31e632 100644 --- a/src/docs/BGE.json +++ b/src/docs/BGE.json @@ -1,4 +1,4 @@ { - "keyword":"BGE", - "docstr":"`BGE` — Bitwise greater than or equal to\n\n### Description\nDetermines whether an integral is a bitwise greater than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BGE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BLE, BLT\n" -} \ No newline at end of file + "keyword": "BGE", + "docstr": "`BGE` — Bitwise greater than or equal to\n\n### Description\nDetermines whether an integral is a bitwise greater than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BGE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BLE, BLT\n" +} diff --git a/src/docs/BGT.json b/src/docs/BGT.json index 86425d7a..156715e3 100644 --- a/src/docs/BGT.json +++ b/src/docs/BGT.json @@ -1,4 +1,4 @@ { - "keyword":"BGT", - "docstr":"`BGT` — Bitwise greater than\n\n### Description\nDetermines whether an integral is a bitwise greater than another.\n\n\n\n### Syntax\n`RESULT = BGT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BLE, BLT\n" -} \ No newline at end of file + "keyword": "BGT", + "docstr": "`BGT` — Bitwise greater than\n\n### Description\nDetermines whether an integral is a bitwise greater than another.\n\n\n\n### Syntax\n`RESULT = BGT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BLE, BLT\n" +} diff --git a/src/docs/BIT_SIZE.json b/src/docs/BIT_SIZE.json index 1d84ce33..5a091632 100644 --- a/src/docs/BIT_SIZE.json +++ b/src/docs/BIT_SIZE.json @@ -1,4 +1,4 @@ { - "keyword":"BIT_SIZE", - "docstr":"`BIT_SIZE` — Bit size inquiry function\n\n### Description\n`BIT_SIZE(I)` returns the number of bits (integer precision plus sign bit)\nrepresented by the type of `I`. The result of `BIT_SIZE(I)` is\nindependent of the actual value of `I`.\n\n\n\n### Syntax\n`RESULT = BIT_SIZE(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n\n ```\n\n\nprogram test_bit_size\n\n    integer :: i = 123\n\n    integer :: size\n\n    size = bit_size(i)\n\n    print *, size\n\nend program test_bit_size\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "BIT_SIZE", + "docstr": "`BIT_SIZE` — Bit size inquiry function\n\n### Description\n`BIT_SIZE(I)` returns the number of bits (integer precision plus sign bit)\nrepresented by the type of `I`. The result of `BIT_SIZE(I)` is\nindependent of the actual value of `I`.\n\n\n\n### Syntax\n`RESULT = BIT_SIZE(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_bit_size\n\n    integer :: i = 123\n\n    integer :: size\n\n    size = bit_size(i)\n\n    print *, size\n\nend program test_bit_size\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/BLE.json b/src/docs/BLE.json index 2ece0660..d85a67a7 100644 --- a/src/docs/BLE.json +++ b/src/docs/BLE.json @@ -1,4 +1,4 @@ { - "keyword":"BLE", - "docstr":"`BLE` — Bitwise less than or equal to\n\n### Description\nDetermines whether an integral is a bitwise less than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BLE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BGE, BLT\n" -} \ No newline at end of file + "keyword": "BLE", + "docstr": "`BLE` — Bitwise less than or equal to\n\n### Description\nDetermines whether an integral is a bitwise less than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BLE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BGE, BLT\n" +} diff --git a/src/docs/BLT.json b/src/docs/BLT.json index 526ca857..090c92d4 100644 --- a/src/docs/BLT.json +++ b/src/docs/BLT.json @@ -1,4 +1,4 @@ { - "keyword":"BLT", - "docstr":"`BLT` — Bitwise less than\n\n### Description\nDetermines whether an integral is a bitwise less than another.\n\n\n\n### Syntax\n`RESULT = BLT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BGT, BLE\n" -} \ No newline at end of file + "keyword": "BLT", + "docstr": "`BLT` — Bitwise less than\n\n### Description\nDetermines whether an integral is a bitwise less than another.\n\n\n\n### Syntax\n`RESULT = BLT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BGT, BLE\n" +} diff --git a/src/docs/BTEST.json b/src/docs/BTEST.json index 0e77ec17..5d3e2c8c 100644 --- a/src/docs/BTEST.json +++ b/src/docs/BTEST.json @@ -1,4 +1,4 @@ { - "keyword":"BTEST", - "docstr":"`BTEST` — Bit test function\n\n### Description\n`BTEST(I,POS)` returns logical `.TRUE.` if the bit at `POS`\nin `I` is set. The counting of the bits starts at 0.\n\n\n\n### Syntax\n`RESULT = BTEST(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`\n\n\n### Example\n\n ```\n\n\nprogram test_btest\n\n    integer :: i = 32768 + 1024 + 64\n\n    integer :: pos\n\n    logical :: bool\n\n    do pos=0,16\n\n        bool = btest(i, pos)\n\n        print *, pos, bool\n\n    end do\n\nend program test_btest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "BTEST", + "docstr": "`BTEST` — Bit test function\n\n### Description\n`BTEST(I,POS)` returns logical `.TRUE.` if the bit at `POS`\nin `I` is set. The counting of the bits starts at 0.\n\n\n\n### Syntax\n`RESULT = BTEST(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`\n\n\n### Example\n```\n\n\nprogram test_btest\n\n    integer :: i = 32768 + 1024 + 64\n\n    integer :: pos\n\n    logical :: bool\n\n    do pos=0,16\n\n        bool = btest(i, pos)\n\n        print *, pos, bool\n\n    end do\n\nend program test_btest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/CEILING.json b/src/docs/CEILING.json index ea9774cc..43c41226 100644 --- a/src/docs/CEILING.json +++ b/src/docs/CEILING.json @@ -1,4 +1,4 @@ { - "keyword":"CEILING", - "docstr":"`CEILING` — Integer ceiling function\n\n### Description\n`CEILING(A)` returns the least integer greater than or equal to `A`.\n\n\n\n### Syntax\n`RESULT = CEILING(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand a default-kind `INTEGER` otherwise.\n\n\n\n### Example\n\n ```\n\n\nprogram test_ceiling\n\n    real :: x = 63.29\n\n    real :: y = -63.59\n\n    print *, ceiling(x) ! returns 64\n\n    print *, ceiling(y) ! returns -63\n\nend program test_ceiling\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nFLOOR, NINT\n\n " -} \ No newline at end of file + "keyword": "CEILING", + "docstr": "`CEILING` — Integer ceiling function\n\n### Description\n`CEILING(A)` returns the least integer greater than or equal to `A`.\n\n\n\n### Syntax\n`RESULT = CEILING(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand a default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_ceiling\n\n    real :: x = 63.29\n\n    real :: y = -63.59\n\n    print *, ceiling(x) ! returns 64\n\n    print *, ceiling(y) ! returns -63\n\nend program test_ceiling\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nFLOOR, NINT\n\n " +} diff --git a/src/docs/CHAR.json b/src/docs/CHAR.json index ec836cc1..f68d4cde 100644 --- a/src/docs/CHAR.json +++ b/src/docs/CHAR.json @@ -1,4 +1,4 @@ { - "keyword":"CHAR", - "docstr":"`CHAR` — Character conversion function\n\n### Description\n`CHAR(I [, KIND])` returns the character represented by the integer `I`.\n\n\n\n### Syntax\n`RESULT = CHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER(1)`\n\n\n### Example\n\n ```\n\n\nprogram test_char\n\n    integer :: i = 74\n\n    character(1) :: c\n\n    c = char(i)\n\n    print *, i, c ! returns 'J'\n\nend program test_char\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CHAR(I)` | `INTEGER I` | `CHARACTER(LEN=1)` | F77 and later\n\n\n\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, IACHAR, ICHAR\n\n " -} \ No newline at end of file + "keyword": "CHAR", + "docstr": "`CHAR` — Character conversion function\n\n### Description\n`CHAR(I [, KIND])` returns the character represented by the integer `I`.\n\n\n\n### Syntax\n`RESULT = CHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER(1)`\n\n\n### Example\n```\n\n\nprogram test_char\n\n    integer :: i = 74\n\n    character(1) :: c\n\n    c = char(i)\n\n    print *, i, c ! returns 'J'\n\nend program test_char\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CHAR(I)` | `INTEGER I` | `CHARACTER(LEN=1)` | F77 and later\n\n\n\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, IACHAR, ICHAR\n\n " +} diff --git a/src/docs/CHDIR.json b/src/docs/CHDIR.json index 19b8cf75..07d9cc4f 100644 --- a/src/docs/CHDIR.json +++ b/src/docs/CHDIR.json @@ -1,4 +1,4 @@ { - "keyword":"CHDIR", - "docstr":"`CHDIR` — Change working directory\n\n### Description\nChange current working directory to a specified path.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHDIR(NAME)`
\n\n\n\n\n\n### Arguments\n\n \n of default\nkind and shall specify a valid path within the file system. \n\n | `STATUS` | (Optional) `INTEGER` status flag of the default\nkind. Returns 0 on success, and a system specific and nonzero error code\notherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_chdir\n\n  CHARACTER(len=255) :: path\n\n  CALL getcwd(path)\n\n  WRITE(*,*) TRIM(path)\n\n  CALL chdir(\"/tmp\")\n\n  CALL getcwd(path)\n\n  WRITE(*,*) TRIM(path)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nGETCWD\n" -} \ No newline at end of file + "keyword": "CHDIR", + "docstr": "`CHDIR` — Change working directory\n\n### Description\nChange current working directory to a specified path.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHDIR(NAME)`
\n\n\n\n\n\n### Arguments\n\n \n of default\nkind and shall specify a valid path within the file system. \n\n | `STATUS` | (Optional) `INTEGER` status flag of the default\nkind. Returns 0 on success, and a system specific and nonzero error code\notherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_chdir\n\n  CHARACTER(len=255) :: path\n\n  CALL getcwd(path)\n\n  WRITE(*,*) TRIM(path)\n\n  CALL chdir(\"/tmp\")\n\n  CALL getcwd(path)\n\n  WRITE(*,*) TRIM(path)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nGETCWD\n" +} diff --git a/src/docs/CHMOD.json b/src/docs/CHMOD.json index bb8303a0..bfc8bebe 100644 --- a/src/docs/CHMOD.json +++ b/src/docs/CHMOD.json @@ -1,4 +1,4 @@ { - "keyword":"CHMOD", - "docstr":"`CHMOD` — Change access permissions of files\n\n### Description\n`CHMOD` changes the permissions of a file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHMOD(NAME, MODE)`
\n\n\n\n\n\n### Arguments\n\n \n\n | `NAME` | Scalar `CHARACTER` of default kind with the\nfile name. Trailing blanks are ignored unless the character\n`achar(0)` is present, then all characters up to and excluding\n`achar(0)` are used as the file name.\n\n \n\n\n | `MODE` | Scalar `CHARACTER` of default kind giving the\nfile permission. `MODE` uses the same syntax as the `chmod` utility\nas defined by the POSIX standard. The argument shall either be a string of\na nonnegative octal number or a symbolic mode.\n\n \n\n\n | `STATUS` | (optional) scalar `INTEGER`, which is\n`0` on success and nonzero otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `STATUS` is set to `0` on success and nonzero\notherwise.\n\n\n\n### Example\n`CHMOD` as subroutine\n ```\n\n\nprogram chmod_test\n\n  implicit none\n\n  integer :: status\n\n  call chmod('test.dat','u+x',status)\n\n  print *, 'Status: ', status\n\nend program chmod_test\n\n```\n\n \n`CHMOD` as function:\n \n
          program chmod_test\n            implicit none\n            integer :: status\n            status = chmod('test.dat','u+x')\n            print *, 'Status: ', status\n          end program chmod_test\n
\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" -} \ No newline at end of file + "keyword": "CHMOD", + "docstr": "`CHMOD` — Change access permissions of files\n\n### Description\n`CHMOD` changes the permissions of a file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHMOD(NAME, MODE)`
\n\n\n\n\n\n### Arguments\n\n \n\n | `NAME` | Scalar `CHARACTER` of default kind with the\nfile name. Trailing blanks are ignored unless the character\n`achar(0)` is present, then all characters up to and excluding\n`achar(0)` are used as the file name.\n\n \n\n\n | `MODE` | Scalar `CHARACTER` of default kind giving the\nfile permission. `MODE` uses the same syntax as the `chmod` utility\nas defined by the POSIX standard. The argument shall either be a string of\na nonnegative octal number or a symbolic mode.\n\n \n\n\n | `STATUS` | (optional) scalar `INTEGER`, which is\n`0` on success and nonzero otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `STATUS` is set to `0` on success and nonzero\notherwise.\n\n\n\n### Example\n`CHMOD` as subroutine\n```\n\n\nprogram chmod_test\n\n  implicit none\n\n  integer :: status\n\n  call chmod('test.dat','u+x',status)\n\n  print *, 'Status: ', status\n\nend program chmod_test\n\n```\n\n \n`CHMOD` as function:\n \n
          program chmod_test\n            implicit none\n            integer :: status\n            status = chmod('test.dat','u+x')\n            print *, 'Status: ', status\n          end program chmod_test\n
\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" +} diff --git a/src/docs/CMPLX.json b/src/docs/CMPLX.json index 3a0755fa..fd080701 100644 --- a/src/docs/CMPLX.json +++ b/src/docs/CMPLX.json @@ -1,4 +1,4 @@ { - "keyword":"CMPLX", - "docstr":"`CMPLX` — Complex conversion function\n\n### Description\n`CMPLX(X [, Y [, KIND]])` returns a complex number where `X` is converted to\nthe real component. If `Y` is present it is converted to the imaginary\ncomponent. If `Y` is not present then the imaginary component is set to\n0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = CMPLX(X [, Y [, KIND]])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional; only allowed if `X` is not\n`COMPLEX`.) May be `INTEGER` or `REAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of `COMPLEX` type, with a kind equal to\n`KIND` if it is specified. If `KIND` is not specified, the\nresult is of the default `COMPLEX` kind, regardless of the kinds of\n`X` and `Y`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_cmplx\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    complex :: z\n\n    z = cmplx(i, x)\n\n    print *, z, cmplx(x)\n\nend program test_cmplx\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCOMPLEX\n" -} \ No newline at end of file + "keyword": "CMPLX", + "docstr": "`CMPLX` — Complex conversion function\n\n### Description\n`CMPLX(X [, Y [, KIND]])` returns a complex number where `X` is converted to\nthe real component. If `Y` is present it is converted to the imaginary\ncomponent. If `Y` is not present then the imaginary component is set to\n0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = CMPLX(X [, Y [, KIND]])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional; only allowed if `X` is not\n`COMPLEX`.) May be `INTEGER` or `REAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of `COMPLEX` type, with a kind equal to\n`KIND` if it is specified. If `KIND` is not specified, the\nresult is of the default `COMPLEX` kind, regardless of the kinds of\n`X` and `Y`.\n\n\n\n### Example\n```\n\n\nprogram test_cmplx\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    complex :: z\n\n    z = cmplx(i, x)\n\n    print *, z, cmplx(x)\n\nend program test_cmplx\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCOMPLEX\n" +} diff --git a/src/docs/COMMAND_ARGUMENT_COUNT.json b/src/docs/COMMAND_ARGUMENT_COUNT.json index acfb9aec..c063e839 100644 --- a/src/docs/COMMAND_ARGUMENT_COUNT.json +++ b/src/docs/COMMAND_ARGUMENT_COUNT.json @@ -1,4 +1,4 @@ { - "keyword":"COMMAND_ARGUMENT_COUNT", - "docstr":"`COMMAND_ARGUMENT_COUNT` — Get number of command line arguments\n\n### Description\n`COMMAND_ARGUMENT_COUNT` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`RESULT = COMMAND_ARGUMENT_COUNT()`\n\n\n### Arguments\n\n \n | None\n\n\n\n\n\n\n### Return value\nThe return value is an `INTEGER` of default kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_command_argument_count\n\n    integer :: count\n\n    count = command_argument_count()\n\n    print *, count\n\nend program test_command_argument_count\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nGET_COMMAND, GET_COMMAND_ARGUMENT\n" -} \ No newline at end of file + "keyword": "COMMAND_ARGUMENT_COUNT", + "docstr": "`COMMAND_ARGUMENT_COUNT` — Get number of command line arguments\n\n### Description\n`COMMAND_ARGUMENT_COUNT` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`RESULT = COMMAND_ARGUMENT_COUNT()`\n\n\n### Arguments\n\n \n | None\n\n\n\n\n\n\n### Return value\nThe return value is an `INTEGER` of default kind.\n\n\n\n### Example\n```\n\n\nprogram test_command_argument_count\n\n    integer :: count\n\n    count = command_argument_count()\n\n    print *, count\n\nend program test_command_argument_count\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nGET_COMMAND, GET_COMMAND_ARGUMENT\n" +} diff --git a/src/docs/COMPILER_OPTIONS.json b/src/docs/COMPILER_OPTIONS.json index f242a2f3..746961c1 100644 --- a/src/docs/COMPILER_OPTIONS.json +++ b/src/docs/COMPILER_OPTIONS.json @@ -1,4 +1,4 @@ { - "keyword":"COMPILER_OPTIONS", - "docstr":"`COMPILER_OPTIONS` — Options passed to the compiler\n\n### Description\n`COMPILER_OPTIONS` returns a string with the options used for\ncompiling.\n\n\n\n### Syntax\n`STR = COMPILER_OPTIONS()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the compiler flags used to compile the file, which called\nthe `COMPILER_OPTIONS` intrinsic.\n\n\n\n### Example\n\n ```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n              compiler_version(), ' using the options ', &\n\n              compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_VERSION, ISO_FORTRAN_ENV\n" -} \ No newline at end of file + "keyword": "COMPILER_OPTIONS", + "docstr": "`COMPILER_OPTIONS` — Options passed to the compiler\n\n### Description\n`COMPILER_OPTIONS` returns a string with the options used for\ncompiling.\n\n\n\n### Syntax\n`STR = COMPILER_OPTIONS()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the compiler flags used to compile the file, which called\nthe `COMPILER_OPTIONS` intrinsic.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n              compiler_version(), ' using the options ', &\n\n              compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_VERSION, ISO_FORTRAN_ENV\n" +} diff --git a/src/docs/COMPILER_VERSION.json b/src/docs/COMPILER_VERSION.json index fd56d943..24e41d1e 100644 --- a/src/docs/COMPILER_VERSION.json +++ b/src/docs/COMPILER_VERSION.json @@ -1,4 +1,4 @@ { - "keyword":"COMPILER_VERSION", - "docstr":"`COMPILER_VERSION` — Compiler version string\n\n### Description\n`COMPILER_VERSION` returns a string with the name and the\nversion of the compiler.\n\n\n\n### Syntax\n`STR = COMPILER_VERSION()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the name of the compiler and its version number.\n\n\n\n### Example\n\n ```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n              compiler_version(), ' using the options ', &\n\n              compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_OPTIONS, ISO_FORTRAN_ENV\n" -} \ No newline at end of file + "keyword": "COMPILER_VERSION", + "docstr": "`COMPILER_VERSION` — Compiler version string\n\n### Description\n`COMPILER_VERSION` returns a string with the name and the\nversion of the compiler.\n\n\n\n### Syntax\n`STR = COMPILER_VERSION()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the name of the compiler and its version number.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n              compiler_version(), ' using the options ', &\n\n              compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_OPTIONS, ISO_FORTRAN_ENV\n" +} diff --git a/src/docs/COMPLEX.json b/src/docs/COMPLEX.json index 851f88a2..d2bf507b 100644 --- a/src/docs/COMPLEX.json +++ b/src/docs/COMPLEX.json @@ -1,4 +1,4 @@ { - "keyword":"COMPLEX", - "docstr":"`COMPLEX` — Complex conversion function\n\n### Description\n`COMPLEX(X, Y)` returns a complex number where `X` is converted\nto the real component and `Y` is converted to the imaginary\ncomponent.\n\n\n\n### Syntax\n`RESULT = COMPLEX(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type may be `INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nIf `X` and `Y` are both of `INTEGER` type, then the return\nvalue is of default `COMPLEX` type.\n\n \nIf `X` and `Y` are of `REAL` type, or one is of `REAL`type and one is of `INTEGER` type, then the return value is of\n`COMPLEX` type with a kind equal to that of the `REAL`argument with the highest precision.\n\n\n\n\n### Example\n\n ```\n\n\nprogram test_complex\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    print *, complex(i, x)\n\nend program test_complex\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCMPLX\n" -} \ No newline at end of file + "keyword": "COMPLEX", + "docstr": "`COMPLEX` — Complex conversion function\n\n### Description\n`COMPLEX(X, Y)` returns a complex number where `X` is converted\nto the real component and `Y` is converted to the imaginary\ncomponent.\n\n\n\n### Syntax\n`RESULT = COMPLEX(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type may be `INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nIf `X` and `Y` are both of `INTEGER` type, then the return\nvalue is of default `COMPLEX` type.\n\n \nIf `X` and `Y` are of `REAL` type, or one is of `REAL`type and one is of `INTEGER` type, then the return value is of\n`COMPLEX` type with a kind equal to that of the `REAL`argument with the highest precision.\n\n\n\n\n### Example\n```\n\n\nprogram test_complex\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    print *, complex(i, x)\n\nend program test_complex\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCMPLX\n" +} diff --git a/src/docs/CONJG.json b/src/docs/CONJG.json index 83d1d596..487d6384 100644 --- a/src/docs/CONJG.json +++ b/src/docs/CONJG.json @@ -1,4 +1,4 @@ { - "keyword":"CONJG", - "docstr":"`CONJG` — Complex conjugate function\n\n### Description\n`CONJG(Z)` returns the conjugate of `Z`. If `Z` is `(x, y)`then the result is `(x, -y)`\n\n\n### Syntax\n`Z = CONJG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_conjg\n\n    complex :: z = (2.0, 3.0)\n\n    complex(8) :: dz = (2.71_8, -3.14_8)\n\n    z= conjg(z)\n\n    print *, z\n\n    dz = dconjg(dz)\n\n    print *, dz\n\nend program test_conjg\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CONJG(Z)` | `COMPLEX Z` | `COMPLEX` | GNU extension\n\n | `DCONJG(Z)` | `COMPLEX(8) Z` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "CONJG", + "docstr": "`CONJG` — Complex conjugate function\n\n### Description\n`CONJG(Z)` returns the conjugate of `Z`. If `Z` is `(x, y)`then the result is `(x, -y)`\n\n\n### Syntax\n`Z = CONJG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX`.\n\n\n\n### Example\n```\n\n\nprogram test_conjg\n\n    complex :: z = (2.0, 3.0)\n\n    complex(8) :: dz = (2.71_8, -3.14_8)\n\n    z= conjg(z)\n\n    print *, z\n\n    dz = dconjg(dz)\n\n    print *, dz\n\nend program test_conjg\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CONJG(Z)` | `COMPLEX Z` | `COMPLEX` | GNU extension\n\n | `DCONJG(Z)` | `COMPLEX(8) Z` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/COS.json b/src/docs/COS.json index f2d13730..63b9acf4 100644 --- a/src/docs/COS.json +++ b/src/docs/COS.json @@ -1,4 +1,4 @@ { - "keyword":"COS", - "docstr":"`COS` — Cosine function\n\n### Description\n`COS(X)` computes the cosine of `X`.\n\n\n\n### Syntax\n`RESULT = COS(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. The real part\nof the result is in radians. If `X` is of the type `REAL`,\nthe return value lies in the range -1 \\leq \\cos (x) \\leq 1.\n\n\n\n### Example\n\n ```\n\n\nprogram test_cos\n\n  real :: x = 0.0\n\n  x = cos(x)\n\nend program test_cos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CCOS(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOS\n\n " -} \ No newline at end of file + "keyword": "COS", + "docstr": "`COS` — Cosine function\n\n### Description\n`COS(X)` computes the cosine of `X`.\n\n\n\n### Syntax\n`RESULT = COS(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. The real part\nof the result is in radians. If `X` is of the type `REAL`,\nthe return value lies in the range -1 \\leq \\cos (x) \\leq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cos\n\n  real :: x = 0.0\n\n  x = cos(x)\n\nend program test_cos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CCOS(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOS\n\n " +} diff --git a/src/docs/COSD.json b/src/docs/COSD.json index 6488dc07..43900d59 100644 --- a/src/docs/COSD.json +++ b/src/docs/COSD.json @@ -1,4 +1,4 @@ { - "keyword":"COSD", - "docstr":"`COSD` — Cosine function, degrees\n\n### Description\nCOSD(X) computes the cosine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COSD(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees. If X is of the type REAL, the return value lies in the range -1 \\leq \\cosd (x) \\leq 1.\n" -} \ No newline at end of file + "keyword": "COSD", + "docstr": "`COSD` — Cosine function, degrees\n\n### Description\nCOSD(X) computes the cosine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COSD(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees. If X is of the type REAL, the return value lies in the range -1 \\leq \\cosd (x) \\leq 1.\n" +} diff --git a/src/docs/COSH.json b/src/docs/COSH.json index 8ed5b6f6..8832d7f6 100644 --- a/src/docs/COSH.json +++ b/src/docs/COSH.json @@ -1,4 +1,4 @@ { - "keyword":"COSH", - "docstr":"`COSH` — Hyperbolic cosine function\n\n### Description\n`COSH(X)` computes the hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`X = COSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value has a lower bound of one,\n\\cosh (x) \\geq 1.\n\n\n\n### Example\n\n ```\n\n\nprogram test_cosh\n\n  real(8) :: x = 1.0_8\n\n  x = cosh(x)\n\nend program test_cosh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COSH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOSH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOSH\n\n " -} \ No newline at end of file + "keyword": "COSH", + "docstr": "`COSH` — Hyperbolic cosine function\n\n### Description\n`COSH(X)` computes the hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`X = COSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value has a lower bound of one,\n\\cosh (x) \\geq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cosh\n\n  real(8) :: x = 1.0_8\n\n  x = cosh(x)\n\nend program test_cosh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COSH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOSH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOSH\n\n " +} diff --git a/src/docs/COTAN.json b/src/docs/COTAN.json index 56520daf..469e5345 100644 --- a/src/docs/COTAN.json +++ b/src/docs/COTAN.json @@ -1,4 +1,4 @@ { - "keyword":"COTAN", - "docstr":"`COTAN` — Cotangent function\n\n### Description\nCOTAN(X) computes the cotangent of X. Equivalent to COS(x) divided by SIN(x), or 1 / TAN(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAN(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in radians.\n" -} \ No newline at end of file + "keyword": "COTAN", + "docstr": "`COTAN` — Cotangent function\n\n### Description\nCOTAN(X) computes the cotangent of X. Equivalent to COS(x) divided by SIN(x), or 1 / TAN(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAN(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in radians.\n" +} diff --git a/src/docs/COTAND.json b/src/docs/COTAND.json index 420dd97d..274bab6f 100644 --- a/src/docs/COTAND.json +++ b/src/docs/COTAND.json @@ -1,4 +1,4 @@ { - "keyword":"COTAND", - "docstr":"`COTAND` — Cotangent function, degrees\n\n### Description\nCOTAND(X) computes the cotangent of X in degrees. Equivalent to COSD(x) divided by SIND(x), or 1 / TAND(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" -} \ No newline at end of file + "keyword": "COTAND", + "docstr": "`COTAND` — Cotangent function, degrees\n\n### Description\nCOTAND(X) computes the cotangent of X in degrees. Equivalent to COSD(x) divided by SIND(x), or 1 / TAND(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" +} diff --git a/src/docs/COUNT.json b/src/docs/COUNT.json index 161d216e..0d76789b 100644 --- a/src/docs/COUNT.json +++ b/src/docs/COUNT.json @@ -1,4 +1,4 @@ { - "keyword":"COUNT", - "docstr":"`COUNT` — Count function\n\n### Description\n\nCounts the number of `.TRUE.` elements in a logical `MASK`,\nor, if the `DIM` argument is supplied, counts the number of\nelements along each row of the array in the `DIM` direction. \nIf the array has zero size, or all of the elements of `MASK` are\n`.FALSE.`, then the result is `0`.\n\n\n\n### Syntax\n`RESULT = COUNT(MASK [, DIM, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `DIM` | (Optional) The type shall be `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is present, the result is an array with a rank one less\nthan the rank of `ARRAY`, and a size corresponding to the shape\nof `ARRAY` with the `DIM` dimension removed.\n\n\n\n### Example\n\n ```\n\n\nprogram test_count\n\n    integer, dimension(2,3) :: a, b\n\n    logical, dimension(2,3) :: mask\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /))\n\n    b = reshape( (/ 0, 7, 3, 4, 5, 8 /), (/ 2, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print *\n\n    print '(3i3)', b(1,:)\n\n    print '(3i3)', b(2,:)\n\n    print *\n\n    mask = a.ne.b\n\n    print '(3l3)', mask(1,:)\n\n    print '(3l3)', mask(2,:)\n\n    print *\n\n    print '(3i3)', count(mask)\n\n    print *\n\n    print '(3i3)', count(mask, 1)\n\n    print *\n\n    print '(3i3)', count(mask, 2)\n\nend program test_count\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "COUNT", + "docstr": "`COUNT` — Count function\n\n### Description\n\nCounts the number of `.TRUE.` elements in a logical `MASK`,\nor, if the `DIM` argument is supplied, counts the number of\nelements along each row of the array in the `DIM` direction. \nIf the array has zero size, or all of the elements of `MASK` are\n`.FALSE.`, then the result is `0`.\n\n\n\n### Syntax\n`RESULT = COUNT(MASK [, DIM, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `DIM` | (Optional) The type shall be `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is present, the result is an array with a rank one less\nthan the rank of `ARRAY`, and a size corresponding to the shape\nof `ARRAY` with the `DIM` dimension removed.\n\n\n\n### Example\n```\n\n\nprogram test_count\n\n    integer, dimension(2,3) :: a, b\n\n    logical, dimension(2,3) :: mask\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /))\n\n    b = reshape( (/ 0, 7, 3, 4, 5, 8 /), (/ 2, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print *\n\n    print '(3i3)', b(1,:)\n\n    print '(3i3)', b(2,:)\n\n    print *\n\n    mask = a.ne.b\n\n    print '(3l3)', mask(1,:)\n\n    print '(3l3)', mask(2,:)\n\n    print *\n\n    print '(3i3)', count(mask)\n\n    print *\n\n    print '(3i3)', count(mask, 1)\n\n    print *\n\n    print '(3i3)', count(mask, 2)\n\nend program test_count\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/CO_BROADCAST.json b/src/docs/CO_BROADCAST.json index b721bbfc..312a157a 100644 --- a/src/docs/CO_BROADCAST.json +++ b/src/docs/CO_BROADCAST.json @@ -1,4 +1,4 @@ { - "keyword":"CO_BROADCAST", - "docstr":"`CO_BROADCAST` — Copy a value to all images the current set of images\n\n### Description\n`CO_BROADCAST` copies the value of argument `A` on the image with\nimage index `SOURCE_IMAGE` to all images in the current team. `A`\nbecomes defined as if by intrinsic assignment. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | INTENT(INOUT) argument; shall have the same\ndynamic type and type paramters on all images of the current team. If it\nis an array, it shall have the same shape on all images. \n\n | `SOURCE_IMAGE` | a scalar integer expression. \nIt shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test\n\n  integer :: val(3)\n\n  if (this_image() == 1) then\n\n    val = [1, 5, 3]\n\n  end if\n\n  call co_broadcast (val, source_image=1)\n\n  print *, this_image, \":\", val\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_SUM, CO_REDUCE\n" -} \ No newline at end of file + "keyword": "CO_BROADCAST", + "docstr": "`CO_BROADCAST` — Copy a value to all images the current set of images\n\n### Description\n`CO_BROADCAST` copies the value of argument `A` on the image with\nimage index `SOURCE_IMAGE` to all images in the current team. `A`\nbecomes defined as if by intrinsic assignment. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | INTENT(INOUT) argument; shall have the same\ndynamic type and type paramters on all images of the current team. If it\nis an array, it shall have the same shape on all images. \n\n | `SOURCE_IMAGE` | a scalar integer expression. \nIt shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n  integer :: val(3)\n\n  if (this_image() == 1) then\n\n    val = [1, 5, 3]\n\n  end if\n\n  call co_broadcast (val, source_image=1)\n\n  print *, this_image, \":\", val\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_SUM, CO_REDUCE\n" +} diff --git a/src/docs/CO_MAX.json b/src/docs/CO_MAX.json index 0960e8a9..1028f873 100644 --- a/src/docs/CO_MAX.json +++ b/src/docs/CO_MAX.json @@ -1,4 +1,4 @@ { - "keyword":"CO_MAX", - "docstr":"`CO_MAX` — Maximal value on the current set of images\n\n### Description\n`CO_MAX` determines element-wise the maximal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the maximum\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_max (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Maximal value\", val ! prints num_images()\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_SUM, CO_REDUCE, CO_BROADCAST\n" -} \ No newline at end of file + "keyword": "CO_MAX", + "docstr": "`CO_MAX` — Maximal value on the current set of images\n\n### Description\n`CO_MAX` determines element-wise the maximal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the maximum\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_max (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Maximal value\", val ! prints num_images()\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_SUM, CO_REDUCE, CO_BROADCAST\n" +} diff --git a/src/docs/CO_MIN.json b/src/docs/CO_MIN.json index e86de071..a4580767 100644 --- a/src/docs/CO_MIN.json +++ b/src/docs/CO_MIN.json @@ -1,4 +1,4 @@ { - "keyword":"CO_MIN", - "docstr":"`CO_MIN` — Minimal value on the current set of images\n\n### Description\n`CO_MIN` determines element-wise the minimal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the minimal\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_min (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Minimal value\", val ! prints 1\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_SUM, CO_REDUCE, CO_BROADCAST\n" -} \ No newline at end of file + "keyword": "CO_MIN", + "docstr": "`CO_MIN` — Minimal value on the current set of images\n\n### Description\n`CO_MIN` determines element-wise the minimal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the minimal\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_min (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Minimal value\", val ! prints 1\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_SUM, CO_REDUCE, CO_BROADCAST\n" +} diff --git a/src/docs/CO_REDUCE.json b/src/docs/CO_REDUCE.json index 69931e6b..2fabb51c 100644 --- a/src/docs/CO_REDUCE.json +++ b/src/docs/CO_REDUCE.json @@ -1,4 +1,4 @@ { - "keyword":"CO_REDUCE", - "docstr":"`CO_REDUCE` — Reduction of values on the current set of images\n\n### Description\n`CO_REDUCE` determines element-wise the reduction of the value of `A`\non all images of the current team. The pure function passed as `OPERATOR`\nis used to pairwise reduce the values of `A` by passing either the value\nof `A` of different images or the result values of such a reduction as\nargument. If `A` is an array, the deduction is done element wise. If\n`RESULT_IMAGE` is present, the result values are returned in `A` on\nthe specified image only and the value of `A` on the other images become\nundefined. If `RESULT_IMAGE` is not present, the value is returned on all\nimages. If the execution was successful and `STAT` is present, it is\nassigned the value zero. If the execution failed, `STAT` gets assigned\na nonzero value and, if present, `ERRMSG` gets assigned a value describing\nthe occurred error.\n\n\n\n### Syntax\n`CALL CO_REDUCE(A, OPERATOR, [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n argument and shall be\nnonpolymorphic. If it is allocatable, it shall be allocated; if it is a pointer,\nit shall be associated. `A` shall have the same type and type parameters on\nall images of the team; if it is an array, it shall have the same shape on all\nimages. \n\n | `OPERATOR` | pure function with two scalar nonallocatable\narguments, which shall be nonpolymorphic and have the same type and type\nparameters as `A`. The function shall return a nonallocatable scalar of\nthe same type and type parameters as `A`. The function shall be the same on\nall images and with regards to the arguments mathematically commutative and\nassociative. Note that `OPERATOR` may not be an elemental function, unless\nit is an intrisic function. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_reduce (val, result_image=1, operator=myprod)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Product value\", val ! prints num_images() factorial\n\n  end if\n\ncontains\n\n  pure function myprod(a, b)\n\n    integer, value :: a, b\n\n    integer :: myprod\n\n    myprod = a * b\n\n  end function myprod\n\nend program test\n\n```\n\n\n\n### Notes\nWhile the rules permit in principle an intrinsic function, none of the\nintrinsics in the standard fulfill the criteria of having a specific\nfunction, which takes two arguments of the same type and returning that\ntype as result.\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_MAX, CO_SUM, CO_BROADCAST\n" -} \ No newline at end of file + "keyword": "CO_REDUCE", + "docstr": "`CO_REDUCE` — Reduction of values on the current set of images\n\n### Description\n`CO_REDUCE` determines element-wise the reduction of the value of `A`\non all images of the current team. The pure function passed as `OPERATOR`\nis used to pairwise reduce the values of `A` by passing either the value\nof `A` of different images or the result values of such a reduction as\nargument. If `A` is an array, the deduction is done element wise. If\n`RESULT_IMAGE` is present, the result values are returned in `A` on\nthe specified image only and the value of `A` on the other images become\nundefined. If `RESULT_IMAGE` is not present, the value is returned on all\nimages. If the execution was successful and `STAT` is present, it is\nassigned the value zero. If the execution failed, `STAT` gets assigned\na nonzero value and, if present, `ERRMSG` gets assigned a value describing\nthe occurred error.\n\n\n\n### Syntax\n`CALL CO_REDUCE(A, OPERATOR, [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n argument and shall be\nnonpolymorphic. If it is allocatable, it shall be allocated; if it is a pointer,\nit shall be associated. `A` shall have the same type and type parameters on\nall images of the team; if it is an array, it shall have the same shape on all\nimages. \n\n | `OPERATOR` | pure function with two scalar nonallocatable\narguments, which shall be nonpolymorphic and have the same type and type\nparameters as `A`. The function shall return a nonallocatable scalar of\nthe same type and type parameters as `A`. The function shall be the same on\nall images and with regards to the arguments mathematically commutative and\nassociative. Note that `OPERATOR` may not be an elemental function, unless\nit is an intrisic function. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_reduce (val, result_image=1, operator=myprod)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"Product value\", val ! prints num_images() factorial\n\n  end if\n\ncontains\n\n  pure function myprod(a, b)\n\n    integer, value :: a, b\n\n    integer :: myprod\n\n    myprod = a * b\n\n  end function myprod\n\nend program test\n\n```\n\n\n\n### Notes\nWhile the rules permit in principle an intrinsic function, none of the\nintrinsics in the standard fulfill the criteria of having a specific\nfunction, which takes two arguments of the same type and returning that\ntype as result.\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_MAX, CO_SUM, CO_BROADCAST\n" +} diff --git a/src/docs/CO_SUM.json b/src/docs/CO_SUM.json index 98429d8c..8b126fbf 100644 --- a/src/docs/CO_SUM.json +++ b/src/docs/CO_SUM.json @@ -1,4 +1,4 @@ { - "keyword":"CO_SUM", - "docstr":"`CO_SUM` — Sum of values on the current set of images\n\n### Description\n`CO_SUM` sums up the values of each element of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the summed-up\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or complex variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_sum (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"The sum is \", val ! prints (n**2 + n)/2, with n = num_images()\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_REDUCE, CO_BROADCAST\n" -} \ No newline at end of file + "keyword": "CO_SUM", + "docstr": "`CO_SUM` — Sum of values on the current set of images\n\n### Description\n`CO_SUM` sums up the values of each element of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the summed-up\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or complex variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n  integer :: val\n\n  val = this_image ()\n\n  call co_sum (val, result_image=1)\n\n  if (this_image() == 1) then\n\n    write(*,*) \"The sum is \", val ! prints (n**2 + n)/2, with n = num_images()\n\n  end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_REDUCE, CO_BROADCAST\n" +} diff --git a/src/docs/CPU_TIME.json b/src/docs/CPU_TIME.json index 52b09d44..ad81c171 100644 --- a/src/docs/CPU_TIME.json +++ b/src/docs/CPU_TIME.json @@ -1,4 +1,4 @@ { - "keyword":"CPU_TIME", - "docstr":"`CPU_TIME` — CPU elapsed time in seconds\n\n### Description\nReturns a `REAL` value representing the elapsed CPU time in\nseconds. This is useful for testing segments of code to determine\nexecution time.\n\n \nIf a time source is available, time will be reported with microsecond\nresolution. If no time source is available, `TIME` is set to\n`-1.0`.\n\n \n\nNote that `TIME` may contain a, system dependent, arbitrary offset\nand may not start with `0.0`. For `CPU_TIME`, the absolute\nvalue is meaningless, only differences between subsequent calls to\nthis subroutine, as shown in the example below, should be used.\n\n\n\n\n### Syntax\n`CALL CPU_TIME(TIME)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n\n ```\n\n\nprogram test_cpu_time\n\n    real :: start, finish\n\n    call cpu_time(start)\n\n        ! put code to test here\n\n    call cpu_time(finish)\n\n    print '(\"Time = \",f6.3,\" seconds.\")',finish-start\n\nend program test_cpu_time\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM_CLOCK, DATE_AND_TIME\n" -} \ No newline at end of file + "keyword": "CPU_TIME", + "docstr": "`CPU_TIME` — CPU elapsed time in seconds\n\n### Description\nReturns a `REAL` value representing the elapsed CPU time in\nseconds. This is useful for testing segments of code to determine\nexecution time.\n\n \nIf a time source is available, time will be reported with microsecond\nresolution. If no time source is available, `TIME` is set to\n`-1.0`.\n\n \n\nNote that `TIME` may contain a, system dependent, arbitrary offset\nand may not start with `0.0`. For `CPU_TIME`, the absolute\nvalue is meaningless, only differences between subsequent calls to\nthis subroutine, as shown in the example below, should be used.\n\n\n\n\n### Syntax\n`CALL CPU_TIME(TIME)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_cpu_time\n\n    real :: start, finish\n\n    call cpu_time(start)\n\n        ! put code to test here\n\n    call cpu_time(finish)\n\n    print '(\"Time = \",f6.3,\" seconds.\")',finish-start\n\nend program test_cpu_time\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM_CLOCK, DATE_AND_TIME\n" +} diff --git a/src/docs/CSHIFT.json b/src/docs/CSHIFT.json index a73fb4bc..4444426c 100644 --- a/src/docs/CSHIFT.json +++ b/src/docs/CSHIFT.json @@ -1,4 +1,4 @@ { - "keyword":"CSHIFT", - "docstr":"`CSHIFT` — Circular shift elements of an array\n\n### Description\n`CSHIFT(ARRAY, SHIFT [, DIM])` performs a circular shift on elements of\n`ARRAY` along the dimension of `DIM`. If `DIM` is omitted it is\ntaken to be `1`. `DIM` is a scalar of type `INTEGER` in the\nrange of 1 \\leq DIM \\leq n) where n is the rank of `ARRAY`. \nIf the rank of `ARRAY` is one, then all elements of `ARRAY` are shifted\nby `SHIFT` places. If rank is greater than one, then all complete rank one\nsections of `ARRAY` along the given dimension are shifted. Elements\nshifted out one end of each rank one section are shifted back in the other end.\n\n\n\n### Syntax\n`RESULT = CSHIFT(ARRAY, SHIFT [, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n\n ```\n\n\nprogram test_cshift\n\n    integer, dimension(3,3) :: a\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\n    a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)\n\n    print *\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\nend program test_cshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "CSHIFT", + "docstr": "`CSHIFT` — Circular shift elements of an array\n\n### Description\n`CSHIFT(ARRAY, SHIFT [, DIM])` performs a circular shift on elements of\n`ARRAY` along the dimension of `DIM`. If `DIM` is omitted it is\ntaken to be `1`. `DIM` is a scalar of type `INTEGER` in the\nrange of 1 \\leq DIM \\leq n) where n is the rank of `ARRAY`. \nIf the rank of `ARRAY` is one, then all elements of `ARRAY` are shifted\nby `SHIFT` places. If rank is greater than one, then all complete rank one\nsections of `ARRAY` along the given dimension are shifted. Elements\nshifted out one end of each rank one section are shifted back in the other end.\n\n\n\n### Syntax\n`RESULT = CSHIFT(ARRAY, SHIFT [, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_cshift\n\n    integer, dimension(3,3) :: a\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\n    a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)\n\n    print *\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\nend program test_cshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/CTIME.json b/src/docs/CTIME.json index a2a2a4fe..5401792e 100644 --- a/src/docs/CTIME.json +++ b/src/docs/CTIME.json @@ -1,4 +1,4 @@ { - "keyword":"CTIME", - "docstr":"`CTIME` — Convert a time into a string\n\n### Description\n`CTIME` converts a system time value, such as returned by\n`TIME8`, to a string. The output will be of the form ‘Sat\nAug 19 18:13:14 1995’.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `RESULT = CTIME(TIME)`.\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `RESULT` | The type shall be of type `CHARACTER` and\nof default kind. It is an `INTENT(OUT)` argument. If the length\nof this variable is too short for the time and date string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe converted date and time as a string.\n\n\n\n### Example\n\n ```\n\n\nprogram test_ctime\n\n    integer(8) :: i\n\n    character(len=30) :: date\n\n    i = time8()\n\n\n    ! Do something, main part of the program\n\n\n    call ctime(i,date)\n\n    print *, 'Program was started on ', date\n\nend program test_ctime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, GMTIME, LTIME, TIME, TIME8\n" -} \ No newline at end of file + "keyword": "CTIME", + "docstr": "`CTIME` — Convert a time into a string\n\n### Description\n`CTIME` converts a system time value, such as returned by\n`TIME8`, to a string. The output will be of the form ‘Sat\nAug 19 18:13:14 1995’.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `RESULT = CTIME(TIME)`.\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `RESULT` | The type shall be of type `CHARACTER` and\nof default kind. It is an `INTENT(OUT)` argument. If the length\nof this variable is too short for the time and date string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe converted date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_ctime\n\n    integer(8) :: i\n\n    character(len=30) :: date\n\n    i = time8()\n\n\n    ! Do something, main part of the program\n\n\n    call ctime(i,date)\n\n    print *, 'Program was started on ', date\n\nend program test_ctime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, GMTIME, LTIME, TIME, TIME8\n" +} diff --git a/src/docs/C_ASSOCIATED.json b/src/docs/C_ASSOCIATED.json index ade57d99..640db87e 100644 --- a/src/docs/C_ASSOCIATED.json +++ b/src/docs/C_ASSOCIATED.json @@ -1,4 +1,4 @@ { - "keyword":"C_ASSOCIATED", - "docstr":"`C_ASSOCIATED` — Status of a C pointer\n\n### Description\n`C_ASSOCIATED(c_ptr_1[, c_ptr_2])` determines the status of the C pointer\n`c_ptr_1` or if `c_ptr_1` is associated with the target `c_ptr_2`.\n\n\n\n### Syntax\n`RESULT = C_ASSOCIATED(c_ptr_1[, c_ptr_2])`\n\n\n### Arguments\n\n \n. \n\n | `c_ptr_2` | (Optional) Scalar of the same type as `c_ptr_1`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`; it is `.false.` if either\n`c_ptr_1` is a C NULL pointer or if `c_ptr1` and `c_ptr_2`\npoint to different addresses.\n\n\n\n### Example\n\n ```\n\n\nsubroutine association_test(a,b)\n\n  use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n  implicit none\n\n  real, pointer :: a\n\n  type(c_ptr) :: b\n\n  if(c_associated(b, c_loc(a))) &\n\n     stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_LOC, C_FUNLOC\n" -} \ No newline at end of file + "keyword": "C_ASSOCIATED", + "docstr": "`C_ASSOCIATED` — Status of a C pointer\n\n### Description\n`C_ASSOCIATED(c_ptr_1[, c_ptr_2])` determines the status of the C pointer\n`c_ptr_1` or if `c_ptr_1` is associated with the target `c_ptr_2`.\n\n\n\n### Syntax\n`RESULT = C_ASSOCIATED(c_ptr_1[, c_ptr_2])`\n\n\n### Arguments\n\n \n. \n\n | `c_ptr_2` | (Optional) Scalar of the same type as `c_ptr_1`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`; it is `.false.` if either\n`c_ptr_1` is a C NULL pointer or if `c_ptr1` and `c_ptr_2`\npoint to different addresses.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n  use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n  implicit none\n\n  real, pointer :: a\n\n  type(c_ptr) :: b\n\n  if(c_associated(b, c_loc(a))) &\n\n     stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_LOC, C_FUNLOC\n" +} diff --git a/src/docs/C_FUNLOC.json b/src/docs/C_FUNLOC.json index b5c5b089..c471fb71 100644 --- a/src/docs/C_FUNLOC.json +++ b/src/docs/C_FUNLOC.json @@ -1,4 +1,4 @@ { - "keyword":"C_FUNLOC", - "docstr":"`C_FUNLOC` — Obtain the C address of a procedure\n\n### Description\n`C_FUNLOC(x)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_FUNLOC(x)`\n\n\n### Arguments\n\n \n | `x` | Interoperable function or pointer to such function.\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_FUNPTR` and contains the C address\nof the argument.\n\n\n\n### Example\n\n ```\n\n\nmodule x\n\n  use iso_c_binding\n\n  implicit none\n\ncontains\n\n  subroutine sub(a) bind(c)\n\n    real(c_float) :: a\n\n    a = sqrt(a)+5.0\n\n  end subroutine sub\n\nend module x\n\nprogram main\n\n  use iso_c_binding\n\n  use x\n\n  implicit none\n\n  interface\n\n    subroutine my_routine(p) bind(c,name='myC_func')\n\n      import :: c_funptr\n\n      type(c_funptr), intent(in) :: p\n\n    end subroutine\n\n  end interface\n\n  call my_routine(c_funloc(sub))\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_LOC, C_F_POINTER, C_F_PROCPOINTER\n" -} \ No newline at end of file + "keyword": "C_FUNLOC", + "docstr": "`C_FUNLOC` — Obtain the C address of a procedure\n\n### Description\n`C_FUNLOC(x)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_FUNLOC(x)`\n\n\n### Arguments\n\n \n | `x` | Interoperable function or pointer to such function.\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_FUNPTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nmodule x\n\n  use iso_c_binding\n\n  implicit none\n\ncontains\n\n  subroutine sub(a) bind(c)\n\n    real(c_float) :: a\n\n    a = sqrt(a)+5.0\n\n  end subroutine sub\n\nend module x\n\nprogram main\n\n  use iso_c_binding\n\n  use x\n\n  implicit none\n\n  interface\n\n    subroutine my_routine(p) bind(c,name='myC_func')\n\n      import :: c_funptr\n\n      type(c_funptr), intent(in) :: p\n\n    end subroutine\n\n  end interface\n\n  call my_routine(c_funloc(sub))\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_LOC, C_F_POINTER, C_F_PROCPOINTER\n" +} diff --git a/src/docs/C_F_POINTER.json b/src/docs/C_F_POINTER.json index 5afb5765..1079b4e3 100644 --- a/src/docs/C_F_POINTER.json +++ b/src/docs/C_F_POINTER.json @@ -1,4 +1,4 @@ { - "keyword":"C_F_POINTER", - "docstr":"`C_F_POINTER` — Convert C into Fortran pointer\n\n### Description\n`C_F_POINTER(CPTR, FPTR[, SHAPE])` assigns the target of the C pointer\n`CPTR` to the Fortran pointer `FPTR` and specifies its shape.\n\n\n\n### Syntax\n`CALL C_F_POINTER(CPTR, FPTR[, SHAPE])`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | pointer interoperable with `cptr`. It is\n`INTENT(OUT)`. \n\n | `SHAPE` | (Optional) Rank-one array of type `INTEGER`with `INTENT(IN)`. It shall be present\nif and only if `fptr` is an array. The size\nmust be equal to the rank of `fptr`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram main\n\n  use iso_c_binding\n\n  implicit none\n\n  interface\n\n    subroutine my_routine(p) bind(c,name='myC_func')\n\n      import :: c_ptr\n\n      type(c_ptr), intent(out) :: p\n\n    end subroutine\n\n  end interface\n\n  type(c_ptr) :: cptr\n\n  real,pointer :: a(:)\n\n  call my_routine(cptr)\n\n  call c_f_pointer(cptr, a, [12])\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_PROCPOINTER\n" -} \ No newline at end of file + "keyword": "C_F_POINTER", + "docstr": "`C_F_POINTER` — Convert C into Fortran pointer\n\n### Description\n`C_F_POINTER(CPTR, FPTR[, SHAPE])` assigns the target of the C pointer\n`CPTR` to the Fortran pointer `FPTR` and specifies its shape.\n\n\n\n### Syntax\n`CALL C_F_POINTER(CPTR, FPTR[, SHAPE])`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | pointer interoperable with `cptr`. It is\n`INTENT(OUT)`. \n\n | `SHAPE` | (Optional) Rank-one array of type `INTEGER`with `INTENT(IN)`. It shall be present\nif and only if `fptr` is an array. The size\nmust be equal to the rank of `fptr`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n  use iso_c_binding\n\n  implicit none\n\n  interface\n\n    subroutine my_routine(p) bind(c,name='myC_func')\n\n      import :: c_ptr\n\n      type(c_ptr), intent(out) :: p\n\n    end subroutine\n\n  end interface\n\n  type(c_ptr) :: cptr\n\n  real,pointer :: a(:)\n\n  call my_routine(cptr)\n\n  call c_f_pointer(cptr, a, [12])\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_PROCPOINTER\n" +} diff --git a/src/docs/C_F_PROCPOINTER.json b/src/docs/C_F_PROCPOINTER.json index 1bcb55b9..b466c937 100644 --- a/src/docs/C_F_PROCPOINTER.json +++ b/src/docs/C_F_PROCPOINTER.json @@ -1,4 +1,4 @@ { - "keyword":"C_F_PROCPOINTER", - "docstr":"`C_F_PROCPOINTER` — Convert C into Fortran procedure pointer\n\n### Description\n`C_F_PROCPOINTER(CPTR, FPTR)` Assign the target of the C function pointer\n`CPTR` to the Fortran procedure pointer `FPTR`.\n\n\n\n### Syntax\n`CALL C_F_PROCPOINTER(cptr, fptr)`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | procedure pointer interoperable with `cptr`. It is\n`INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram main\n\n  use iso_c_binding\n\n  implicit none\n\n  abstract interface\n\n    function func(a)\n\n      import :: c_float\n\n      real(c_float), intent(in) :: a\n\n      real(c_float) :: func\n\n    end function\n\n  end interface\n\n  interface\n\n     function getIterFunc() bind(c,name=\"getIterFunc\")\n\n       import :: c_funptr\n\n       type(c_funptr) :: getIterFunc\n\n     end function\n\n  end interface\n\n  type(c_funptr) :: cfunptr\n\n  procedure(func), pointer :: myFunc\n\n  cfunptr = getIterFunc()\n\n  call c_f_procpointer(cfunptr, myFunc)\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_POINTER\n" -} \ No newline at end of file + "keyword": "C_F_PROCPOINTER", + "docstr": "`C_F_PROCPOINTER` — Convert C into Fortran procedure pointer\n\n### Description\n`C_F_PROCPOINTER(CPTR, FPTR)` Assign the target of the C function pointer\n`CPTR` to the Fortran procedure pointer `FPTR`.\n\n\n\n### Syntax\n`CALL C_F_PROCPOINTER(cptr, fptr)`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | procedure pointer interoperable with `cptr`. It is\n`INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n  use iso_c_binding\n\n  implicit none\n\n  abstract interface\n\n    function func(a)\n\n      import :: c_float\n\n      real(c_float), intent(in) :: a\n\n      real(c_float) :: func\n\n    end function\n\n  end interface\n\n  interface\n\n     function getIterFunc() bind(c,name=\"getIterFunc\")\n\n       import :: c_funptr\n\n       type(c_funptr) :: getIterFunc\n\n     end function\n\n  end interface\n\n  type(c_funptr) :: cfunptr\n\n  procedure(func), pointer :: myFunc\n\n  cfunptr = getIterFunc()\n\n  call c_f_procpointer(cfunptr, myFunc)\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_POINTER\n" +} diff --git a/src/docs/C_LOC.json b/src/docs/C_LOC.json index e9f392ab..41d13f79 100644 --- a/src/docs/C_LOC.json +++ b/src/docs/C_LOC.json @@ -1,4 +1,4 @@ { - "keyword":"C_LOC", - "docstr":"`C_LOC` — Obtain the C address of an object\n\n### Description\n`C_LOC(X)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.\n\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_PTR` and contains the C address\nof the argument.\n\n\n\n### Example\n\n ```\n\n\nsubroutine association_test(a,b)\n\n  use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n  implicit none\n\n  real, pointer :: a\n\n  type(c_ptr) :: b\n\n  if(c_associated(b, c_loc(a))) &\n\n     stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_FUNLOC, C_F_POINTER, C_F_PROCPOINTER\n" -} \ No newline at end of file + "keyword": "C_LOC", + "docstr": "`C_LOC` — Obtain the C address of an object\n\n### Description\n`C_LOC(X)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.\n\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_PTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n  use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n  implicit none\n\n  real, pointer :: a\n\n  type(c_ptr) :: b\n\n  if(c_associated(b, c_loc(a))) &\n\n     stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_FUNLOC, C_F_POINTER, C_F_PROCPOINTER\n" +} diff --git a/src/docs/C_SIZEOF.json b/src/docs/C_SIZEOF.json index d33fd81e..5bff0ced 100644 --- a/src/docs/C_SIZEOF.json +++ b/src/docs/C_SIZEOF.json @@ -1,4 +1,4 @@ { - "keyword":"C_SIZEOF", - "docstr":"`C_SIZEOF` — Size in bytes of an expression\n\n### Description\n`C_SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = C_SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be an interoperable data entity.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components.\n\n\n\n### Example\n\n ```\n\n\nuse iso_c_binding\n\ninteger(c_int) :: i\n\nreal(c_float) :: r, s(5)\n\nprint *, (c_sizeof(s)/c_sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_C_BINDING`\n\n\n### See also\nSIZEOF, STORAGE_SIZE\n" -} \ No newline at end of file + "keyword": "C_SIZEOF", + "docstr": "`C_SIZEOF` — Size in bytes of an expression\n\n### Description\n`C_SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = C_SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be an interoperable data entity.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components.\n\n\n\n### Example\n```\n\n\nuse iso_c_binding\n\ninteger(c_int) :: i\n\nreal(c_float) :: r, s(5)\n\nprint *, (c_sizeof(s)/c_sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_C_BINDING`\n\n\n### See also\nSIZEOF, STORAGE_SIZE\n" +} diff --git a/src/docs/DATE_AND_TIME.json b/src/docs/DATE_AND_TIME.json index 05922a5d..6300445f 100644 --- a/src/docs/DATE_AND_TIME.json +++ b/src/docs/DATE_AND_TIME.json @@ -1,4 +1,4 @@ { - "keyword":"DATE_AND_TIME", - "docstr":"`DATE_AND_TIME` — Date and time subroutine\n\n### Description\n`DATE_AND_TIME(DATE, TIME, ZONE, VALUES)` gets the corresponding date and\ntime information from the real-time system clock. `DATE` is\n`INTENT(OUT)` and has form ccyymmdd. `TIME` is `INTENT(OUT)` and\nhas form hhmmss.sss. `ZONE` is `INTENT(OUT)` and has form (+-)hhmm,\nrepresenting the difference with respect to Coordinated Universal Time (UTC). \nUnavailable time and date parameters return blanks.\n\n \n`VALUES` is `INTENT(OUT)` and provides the following:\n\n \n\n: | The year\n\n | `VALUE(2)`: | The month\n\n | `VALUE(3)`: | The day of the month\n\n | `VALUE(4)`: | Time difference with UTC in minutes\n\n | `VALUE(5)`: | The hour of the day\n\n | `VALUE(6)`: | The minutes of the hour\n\n | `VALUE(7)`: | The seconds of the minute\n\n | `VALUE(8)`: | The milliseconds of the second\n\n\n\n\n\n\n### Syntax\n`CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])`\n\n\n### Arguments\n\n \n\nor larger, and of default kind. \n\n | `TIME` | (Optional) The type shall be `CHARACTER(LEN=10)`or larger, and of default kind. \n\n | `ZONE` | (Optional) The type shall be `CHARACTER(LEN=5)`or larger, and of default kind. \n\n | `VALUES` | (Optional) The type shall be `INTEGER(8)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n\n ```\n\n\nprogram test_time_and_date\n\n    character(8) :: date\n\n    character(10) :: time\n\n    character(5) :: zone\n\n    integer,dimension(8) :: values\n\n    ! using keyword arguments\n\n    call date_and_time(date,time,zone,values)\n\n    call date_and_time(DATE=date,ZONE=zone)\n\n    call date_and_time(TIME=time)\n\n    call date_and_time(VALUES=values)\n\n    print '(a,2x,a,2x,a)', date, time, zone\n\n    print '(8i5)', values\n\nend program test_time_and_date\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCPU_TIME, SYSTEM_CLOCK\n" -} \ No newline at end of file + "keyword": "DATE_AND_TIME", + "docstr": "`DATE_AND_TIME` — Date and time subroutine\n\n### Description\n`DATE_AND_TIME(DATE, TIME, ZONE, VALUES)` gets the corresponding date and\ntime information from the real-time system clock. `DATE` is\n`INTENT(OUT)` and has form ccyymmdd. `TIME` is `INTENT(OUT)` and\nhas form hhmmss.sss. `ZONE` is `INTENT(OUT)` and has form (+-)hhmm,\nrepresenting the difference with respect to Coordinated Universal Time (UTC). \nUnavailable time and date parameters return blanks.\n\n \n`VALUES` is `INTENT(OUT)` and provides the following:\n\n \n\n: | The year\n\n | `VALUE(2)`: | The month\n\n | `VALUE(3)`: | The day of the month\n\n | `VALUE(4)`: | Time difference with UTC in minutes\n\n | `VALUE(5)`: | The hour of the day\n\n | `VALUE(6)`: | The minutes of the hour\n\n | `VALUE(7)`: | The seconds of the minute\n\n | `VALUE(8)`: | The milliseconds of the second\n\n\n\n\n\n\n### Syntax\n`CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])`\n\n\n### Arguments\n\n \n\nor larger, and of default kind. \n\n | `TIME` | (Optional) The type shall be `CHARACTER(LEN=10)`or larger, and of default kind. \n\n | `ZONE` | (Optional) The type shall be `CHARACTER(LEN=5)`or larger, and of default kind. \n\n | `VALUES` | (Optional) The type shall be `INTEGER(8)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_time_and_date\n\n    character(8) :: date\n\n    character(10) :: time\n\n    character(5) :: zone\n\n    integer,dimension(8) :: values\n\n    ! using keyword arguments\n\n    call date_and_time(date,time,zone,values)\n\n    call date_and_time(DATE=date,ZONE=zone)\n\n    call date_and_time(TIME=time)\n\n    call date_and_time(VALUES=values)\n\n    print '(a,2x,a,2x,a)', date, time, zone\n\n    print '(8i5)', values\n\nend program test_time_and_date\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCPU_TIME, SYSTEM_CLOCK\n" +} diff --git a/src/docs/DBLE.json b/src/docs/DBLE.json index 3afa2cd8..eb95ac8c 100644 --- a/src/docs/DBLE.json +++ b/src/docs/DBLE.json @@ -1,4 +1,4 @@ { - "keyword":"DBLE", - "docstr":"`DBLE` — Double conversion function\n\n### Description\n`DBLE(A)` Converts `A` to double precision real type.\n\n\n\n### Syntax\n`RESULT = DBLE(A)`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type double precision real.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dble\n\n    real :: x = 2.18\n\n    integer :: i = 5\n\n    complex :: z = (2.3,1.14)\n\n    print *, dble(x), dble(i), dble(z)\n\nend program test_dble\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nREAL\n" -} \ No newline at end of file + "keyword": "DBLE", + "docstr": "`DBLE` — Double conversion function\n\n### Description\n`DBLE(A)` Converts `A` to double precision real type.\n\n\n\n### Syntax\n`RESULT = DBLE(A)`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type double precision real.\n\n\n\n### Example\n```\n\n\nprogram test_dble\n\n    real :: x = 2.18\n\n    integer :: i = 5\n\n    complex :: z = (2.3,1.14)\n\n    print *, dble(x), dble(i), dble(z)\n\nend program test_dble\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nREAL\n" +} diff --git a/src/docs/DCMPLX.json b/src/docs/DCMPLX.json index 5b0375de..9734b100 100644 --- a/src/docs/DCMPLX.json +++ b/src/docs/DCMPLX.json @@ -1,4 +1,4 @@ { - "keyword":"DCMPLX", - "docstr":"`DCMPLX` — Double complex conversion function\n\n### Description\n`DCMPLX(X [,Y])` returns a double complex number where `X` is\nconverted to the real component. If `Y` is present it is converted to the\nimaginary component. If `Y` is not present then the imaginary component is\nset to 0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = DCMPLX(X [, Y])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional if `X` is not `COMPLEX`.) May be\n`INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX(8)`\n\n\n### Example\n\n ```\n\n\nprogram test_dcmplx\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    complex :: z\n\n    z = cmplx(i, x)\n\n    print *, dcmplx(i)\n\n    print *, dcmplx(x)\n\n    print *, dcmplx(z)\n\n    print *, dcmplx(x,i)\n\nend program test_dcmplx\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "DCMPLX", + "docstr": "`DCMPLX` — Double complex conversion function\n\n### Description\n`DCMPLX(X [,Y])` returns a double complex number where `X` is\nconverted to the real component. If `Y` is present it is converted to the\nimaginary component. If `Y` is not present then the imaginary component is\nset to 0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = DCMPLX(X [, Y])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional if `X` is not `COMPLEX`.) May be\n`INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX(8)`\n\n\n### Example\n```\n\n\nprogram test_dcmplx\n\n    integer :: i = 42\n\n    real :: x = 3.14\n\n    complex :: z\n\n    z = cmplx(i, x)\n\n    print *, dcmplx(i)\n\n    print *, dcmplx(x)\n\n    print *, dcmplx(z)\n\n    print *, dcmplx(x,i)\n\nend program test_dcmplx\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/DIGITS.json b/src/docs/DIGITS.json index 92a13bf3..e5a6742c 100644 --- a/src/docs/DIGITS.json +++ b/src/docs/DIGITS.json @@ -1,4 +1,4 @@ { - "keyword":"DIGITS", - "docstr":"`DIGITS` — Significant binary digits function\n\n### Description\n`DIGITS(X)` returns the number of significant binary digits of the internal\nmodel representation of `X`. For example, on a system using a 32-bit\nfloating point representation, a default real number would likely return 24.\n\n\n\n### Syntax\n`RESULT = DIGITS(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_digits\n\n    integer :: i = 12345\n\n    real :: x = 3.143\n\n    real(8) :: y = 2.33\n\n    print *, digits(i)\n\n    print *, digits(x)\n\n    print *, digits(y)\n\nend program test_digits\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "DIGITS", + "docstr": "`DIGITS` — Significant binary digits function\n\n### Description\n`DIGITS(X)` returns the number of significant binary digits of the internal\nmodel representation of `X`. For example, on a system using a 32-bit\nfloating point representation, a default real number would likely return 24.\n\n\n\n### Syntax\n`RESULT = DIGITS(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_digits\n\n    integer :: i = 12345\n\n    real :: x = 3.143\n\n    real(8) :: y = 2.33\n\n    print *, digits(i)\n\n    print *, digits(x)\n\n    print *, digits(y)\n\nend program test_digits\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/DIM.json b/src/docs/DIM.json index 0e9949fe..3fcbfffb 100644 --- a/src/docs/DIM.json +++ b/src/docs/DIM.json @@ -1,4 +1,4 @@ { - "keyword":"DIM", - "docstr":"`DIM` — Positive difference\n\n### Description\n`DIM(X,Y)` returns the difference `X-Y` if the result is positive;\notherwise returns zero.\n\n\n\n### Syntax\n`RESULT = DIM(X, Y)`\n\n\n### Arguments\n\n \n\n\n | `Y` | The type shall be the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` or `REAL`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dim\n\n    integer :: i\n\n    real(8) :: x\n\n    i = dim(4, 15)\n\n    x = dim(4.345_8, 2.111_8)\n\n    print *, i\n\n    print *, x\n\nend program test_dim\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DIM(X,Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `IDIM(X,Y)` | `INTEGER(4) X, Y` | `INTEGER(4)` | Fortran 77 and later\n\n | `DDIM(X,Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "DIM", + "docstr": "`DIM` — Positive difference\n\n### Description\n`DIM(X,Y)` returns the difference `X-Y` if the result is positive;\notherwise returns zero.\n\n\n\n### Syntax\n`RESULT = DIM(X, Y)`\n\n\n### Arguments\n\n \n\n\n | `Y` | The type shall be the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` or `REAL`.\n\n\n\n### Example\n```\n\n\nprogram test_dim\n\n    integer :: i\n\n    real(8) :: x\n\n    i = dim(4, 15)\n\n    x = dim(4.345_8, 2.111_8)\n\n    print *, i\n\n    print *, x\n\nend program test_dim\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DIM(X,Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `IDIM(X,Y)` | `INTEGER(4) X, Y` | `INTEGER(4)` | Fortran 77 and later\n\n | `DDIM(X,Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/DOT_PRODUCT.json b/src/docs/DOT_PRODUCT.json index 1b626a7e..d41c1c76 100644 --- a/src/docs/DOT_PRODUCT.json +++ b/src/docs/DOT_PRODUCT.json @@ -1,4 +1,4 @@ { - "keyword":"DOT_PRODUCT", - "docstr":"`DOT_PRODUCT` — Dot product function\n\n### Description\n`DOT_PRODUCT(VECTOR_A, VECTOR_B)` computes the dot product multiplication\nof two vectors `VECTOR_A` and `VECTOR_B`. The two vectors may be\neither numeric or logical and must be arrays of rank one and of equal size. If\nthe vectors are `INTEGER` or `REAL`, the result is\n`SUM(VECTOR_A*VECTOR_B)`. If the vectors are `COMPLEX`, the result\nis `SUM(CONJG(VECTOR_A)*VECTOR_B)`. If the vectors are `LOGICAL`,\nthe result is `ANY(VECTOR_A .AND. VECTOR_B)`.\n\n\n\n### Syntax\n`RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)`\n\n\n### Arguments\n\n \n, rank 1. \n\n | `VECTOR_B` | The type shall be numeric if `VECTOR_A` is of numeric type or `LOGICAL` if `VECTOR_A` is of type `LOGICAL`. `VECTOR_B` shall be a rank-one array.\n\n\n\n\n\n\n### Return value\nIf the arguments are numeric, the return value is a scalar of numeric type,\n`INTEGER`, `REAL`, or `COMPLEX`. If the arguments are\n`LOGICAL`, the return value is `.TRUE.` or `.FALSE.`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dot_prod\n\n    integer, dimension(3) :: a, b\n\n    a = (/ 1, 2, 3 /)\n\n    b = (/ 4, 5, 6 /)\n\n    print '(3i3)', a\n\n    print *\n\n    print '(3i3)', b\n\n    print *\n\n    print *, dot_product(a,b)\n\nend program test_dot_prod\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "DOT_PRODUCT", + "docstr": "`DOT_PRODUCT` — Dot product function\n\n### Description\n`DOT_PRODUCT(VECTOR_A, VECTOR_B)` computes the dot product multiplication\nof two vectors `VECTOR_A` and `VECTOR_B`. The two vectors may be\neither numeric or logical and must be arrays of rank one and of equal size. If\nthe vectors are `INTEGER` or `REAL`, the result is\n`SUM(VECTOR_A*VECTOR_B)`. If the vectors are `COMPLEX`, the result\nis `SUM(CONJG(VECTOR_A)*VECTOR_B)`. If the vectors are `LOGICAL`,\nthe result is `ANY(VECTOR_A .AND. VECTOR_B)`.\n\n\n\n### Syntax\n`RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)`\n\n\n### Arguments\n\n \n, rank 1. \n\n | `VECTOR_B` | The type shall be numeric if `VECTOR_A` is of numeric type or `LOGICAL` if `VECTOR_A` is of type `LOGICAL`. `VECTOR_B` shall be a rank-one array.\n\n\n\n\n\n\n### Return value\nIf the arguments are numeric, the return value is a scalar of numeric type,\n`INTEGER`, `REAL`, or `COMPLEX`. If the arguments are\n`LOGICAL`, the return value is `.TRUE.` or `.FALSE.`.\n\n\n\n### Example\n```\n\n\nprogram test_dot_prod\n\n    integer, dimension(3) :: a, b\n\n    a = (/ 1, 2, 3 /)\n\n    b = (/ 4, 5, 6 /)\n\n    print '(3i3)', a\n\n    print *\n\n    print '(3i3)', b\n\n    print *\n\n    print *, dot_product(a,b)\n\nend program test_dot_prod\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/DPROD.json b/src/docs/DPROD.json index 4ac90c32..c7a2d9bf 100644 --- a/src/docs/DPROD.json +++ b/src/docs/DPROD.json @@ -1,4 +1,4 @@ { - "keyword":"DPROD", - "docstr":"`DPROD` — Double product function\n\n### Description\n`DPROD(X,Y)` returns the product `X*Y`.\n\n\n\n### Syntax\n`RESULT = DPROD(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type shall be `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dprod\n\n    real :: x = 5.2\n\n    real :: y = 2.3\n\n    real(8) :: d\n\n    d = dprod(x,y)\n\n    print *, d\n\nend program test_dprod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DPROD(X,Y)` | `REAL(4) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "DPROD", + "docstr": "`DPROD` — Double product function\n\n### Description\n`DPROD(X,Y)` returns the product `X*Y`.\n\n\n\n### Syntax\n`RESULT = DPROD(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type shall be `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dprod\n\n    real :: x = 5.2\n\n    real :: y = 2.3\n\n    real(8) :: d\n\n    d = dprod(x,y)\n\n    print *, d\n\nend program test_dprod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DPROD(X,Y)` | `REAL(4) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/DREAL.json b/src/docs/DREAL.json index c8b2766d..74f2ecec 100644 --- a/src/docs/DREAL.json +++ b/src/docs/DREAL.json @@ -1,4 +1,4 @@ { - "keyword":"DREAL", - "docstr":"`DREAL` — Double real part function\n\n### Description\n`DREAL(Z)` returns the real part of complex variable `Z`.\n\n\n\n### Syntax\n`RESULT = DREAL(A)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dreal\n\n    complex(8) :: z = (1.3_8,7.2_8)\n\n    print *, dreal(z)\n\nend program test_dreal\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nAIMAG\n\n " -} \ No newline at end of file + "keyword": "DREAL", + "docstr": "`DREAL` — Double real part function\n\n### Description\n`DREAL(Z)` returns the real part of complex variable `Z`.\n\n\n\n### Syntax\n`RESULT = DREAL(A)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dreal\n\n    complex(8) :: z = (1.3_8,7.2_8)\n\n    print *, dreal(z)\n\nend program test_dreal\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nAIMAG\n\n " +} diff --git a/src/docs/DSHIFTL.json b/src/docs/DSHIFTL.json index 226d76ec..6ea5e634 100644 --- a/src/docs/DSHIFTL.json +++ b/src/docs/DSHIFTL.json @@ -1,4 +1,4 @@ { - "keyword":"DSHIFTL", - "docstr":"`DSHIFTL` — Combined left shift\n\n### Description\n`DSHIFTL(I, J, SHIFT)` combines bits of `I` and `J`. The\nrightmost `SHIFT` bits of the result are the leftmost `SHIFT`\nbits of `J`, and the remaining bits are the rightmost bits of\n`I`.\n\n\n\n### Syntax\n`RESULT = DSHIFTL(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTR\n" -} \ No newline at end of file + "keyword": "DSHIFTL", + "docstr": "`DSHIFTL` — Combined left shift\n\n### Description\n`DSHIFTL(I, J, SHIFT)` combines bits of `I` and `J`. The\nrightmost `SHIFT` bits of the result are the leftmost `SHIFT`\nbits of `J`, and the remaining bits are the rightmost bits of\n`I`.\n\n\n\n### Syntax\n`RESULT = DSHIFTL(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTR\n" +} diff --git a/src/docs/DSHIFTR.json b/src/docs/DSHIFTR.json index 3a36a623..477f972e 100644 --- a/src/docs/DSHIFTR.json +++ b/src/docs/DSHIFTR.json @@ -1,4 +1,4 @@ { - "keyword":"DSHIFTR", - "docstr":"`DSHIFTR` — Combined right shift\n\n### Description\n`DSHIFTR(I, J, SHIFT)` combines bits of `I` and `J`. The\nleftmost `SHIFT` bits of the result are the rightmost `SHIFT`\nbits of `I`, and the remaining bits are the leftmost bits of\n`J`.\n\n\n\n### Syntax\n`RESULT = DSHIFTR(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTL\n" -} \ No newline at end of file + "keyword": "DSHIFTR", + "docstr": "`DSHIFTR` — Combined right shift\n\n### Description\n`DSHIFTR(I, J, SHIFT)` combines bits of `I` and `J`. The\nleftmost `SHIFT` bits of the result are the rightmost `SHIFT`\nbits of `I`, and the remaining bits are the leftmost bits of\n`J`.\n\n\n\n### Syntax\n`RESULT = DSHIFTR(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTL\n" +} diff --git a/src/docs/DTIME.json b/src/docs/DTIME.json index 032085c5..4e3ef1b8 100644 --- a/src/docs/DTIME.json +++ b/src/docs/DTIME.json @@ -1,4 +1,4 @@ { - "keyword":"DTIME", - "docstr":"`DTIME` — Execution time subroutine (or function)\n\n### Description\n`DTIME(VALUES, TIME)` initially returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to VALUES(1) +\nVALUES(2).\n\n \nSubsequent invocations of `DTIME` return values accumulated since the\nprevious invocation.\n\n \n\nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nPlease note, that this implementation is thread safe if used within OpenMP\ndirectives, i.e., its state will be consistent while called from multiple\nthreads. However, if `DTIME` is called from multiple threads, the result\nis still the time since the last invocation. This may not give the intended\nresults. If possible, use `CPU_TIME` instead.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | `VALUES(2)`: | System time in seconds. \n\n | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = DTIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the last invocation or since the start of program\nexecution if not called before.\n\n\n\n### Example\n\n ```\n\n\nprogram test_dtime\n\n    integer(8) :: i, j\n\n    real, dimension(2) :: tarray\n\n    real :: result\n\n    call dtime(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\n    do i=1,100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call dtime(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\nend program test_dtime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " -} \ No newline at end of file + "keyword": "DTIME", + "docstr": "`DTIME` — Execution time subroutine (or function)\n\n### Description\n`DTIME(VALUES, TIME)` initially returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to VALUES(1) +\nVALUES(2).\n\n \nSubsequent invocations of `DTIME` return values accumulated since the\nprevious invocation.\n\n \n\nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nPlease note, that this implementation is thread safe if used within OpenMP\ndirectives, i.e., its state will be consistent while called from multiple\nthreads. However, if `DTIME` is called from multiple threads, the result\nis still the time since the last invocation. This may not give the intended\nresults. If possible, use `CPU_TIME` instead.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | `VALUES(2)`: | System time in seconds. \n\n | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = DTIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the last invocation or since the start of program\nexecution if not called before.\n\n\n\n### Example\n```\n\n\nprogram test_dtime\n\n    integer(8) :: i, j\n\n    real, dimension(2) :: tarray\n\n    real :: result\n\n    call dtime(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\n    do i=1,100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call dtime(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\nend program test_dtime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " +} diff --git a/src/docs/EOSHIFT.json b/src/docs/EOSHIFT.json index 148dbf54..ceb940b1 100644 --- a/src/docs/EOSHIFT.json +++ b/src/docs/EOSHIFT.json @@ -1,4 +1,4 @@ { - "keyword":"EOSHIFT", - "docstr":"`EOSHIFT` — End-off shift elements of an array\n\n### Description\n`EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])` performs an end-off shift on\nelements of `ARRAY` along the dimension of `DIM`. If `DIM` is\nomitted it is taken to be `1`. `DIM` is a scalar of type\n`INTEGER` in the range of 1 \\leq DIM \\leq n) where n is the\nrank of `ARRAY`. If the rank of `ARRAY` is one, then all elements of\n`ARRAY` are shifted by `SHIFT` places. If rank is greater than one,\nthen all complete rank one sections of `ARRAY` along the given dimension are\nshifted. Elements shifted out one end of each rank one section are dropped. If\n`BOUNDARY` is present then the corresponding value of from `BOUNDARY`\nis copied back in the other end. If `BOUNDARY` is not present then the\nfollowing are copied in depending on the type of `ARRAY`.\n\n \n\n\n | Numeric | 0 of the type and kind of `ARRAY`. \n\n | Logical | `.FALSE.`. \n\n | Character(`len`) | `len` blanks.\n\n\n\n\n\n\n### Syntax\n`RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | May be any type, not scalar. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `BOUNDARY` | Same type as `ARRAY`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n\n ```\n\n\nprogram test_eoshift\n\n    integer, dimension(3,3) :: a\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\n    a = EOSHIFT(a, SHIFT=(/1, 2, 1/), BOUNDARY=-5, DIM=2)\n\n    print *\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\nend program test_eoshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "EOSHIFT", + "docstr": "`EOSHIFT` — End-off shift elements of an array\n\n### Description\n`EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])` performs an end-off shift on\nelements of `ARRAY` along the dimension of `DIM`. If `DIM` is\nomitted it is taken to be `1`. `DIM` is a scalar of type\n`INTEGER` in the range of 1 \\leq DIM \\leq n) where n is the\nrank of `ARRAY`. If the rank of `ARRAY` is one, then all elements of\n`ARRAY` are shifted by `SHIFT` places. If rank is greater than one,\nthen all complete rank one sections of `ARRAY` along the given dimension are\nshifted. Elements shifted out one end of each rank one section are dropped. If\n`BOUNDARY` is present then the corresponding value of from `BOUNDARY`\nis copied back in the other end. If `BOUNDARY` is not present then the\nfollowing are copied in depending on the type of `ARRAY`.\n\n \n\n\n | Numeric | 0 of the type and kind of `ARRAY`. \n\n | Logical | `.FALSE.`. \n\n | Character(`len`) | `len` blanks.\n\n\n\n\n\n\n### Syntax\n`RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | May be any type, not scalar. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `BOUNDARY` | Same type as `ARRAY`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_eoshift\n\n    integer, dimension(3,3) :: a\n\n    a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\n    a = EOSHIFT(a, SHIFT=(/1, 2, 1/), BOUNDARY=-5, DIM=2)\n\n    print *\n\n    print '(3i3)', a(1,:)\n\n    print '(3i3)', a(2,:)\n\n    print '(3i3)', a(3,:)\n\nend program test_eoshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/EPSILON.json b/src/docs/EPSILON.json index 9413c593..4218905d 100644 --- a/src/docs/EPSILON.json +++ b/src/docs/EPSILON.json @@ -1,4 +1,4 @@ { - "keyword":"EPSILON", - "docstr":"`EPSILON` — Epsilon function\n\n### Description\n`EPSILON(X)` returns the smallest number `E` of the same kind\nas `X` such that 1 + E > 1.\n\n\n\n### Syntax\n`RESULT = EPSILON(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of same type as the argument.\n\n\n\n### Example\n\n ```\n\n\nprogram test_epsilon\n\n    real :: x = 3.143\n\n    real(8) :: y = 2.33\n\n    print *, EPSILON(x)\n\n    print *, EPSILON(y)\n\nend program test_epsilon\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "EPSILON", + "docstr": "`EPSILON` — Epsilon function\n\n### Description\n`EPSILON(X)` returns the smallest number `E` of the same kind\nas `X` such that 1 + E > 1.\n\n\n\n### Syntax\n`RESULT = EPSILON(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of same type as the argument.\n\n\n\n### Example\n```\n\n\nprogram test_epsilon\n\n    real :: x = 3.143\n\n    real(8) :: y = 2.33\n\n    print *, EPSILON(x)\n\n    print *, EPSILON(y)\n\nend program test_epsilon\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/ERF.json b/src/docs/ERF.json index 9c5853a3..d26f802e 100644 --- a/src/docs/ERF.json +++ b/src/docs/ERF.json @@ -1,4 +1,4 @@ { - "keyword":"ERF", - "docstr":"`ERF` — Error function\n\n### Description\n`ERF(X)` computes the error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERF(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`, of the same kind as\n`X` and lies in the range -1 \\leq erf (x) \\leq 1 .\n\n\n\n### Example\n\n ```\n\n\nprogram test_erf\n\n  real(8) :: x = 0.17_8\n\n  x = erf(x)\n\nend program test_erf\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERF(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ERF", + "docstr": "`ERF` — Error function\n\n### Description\n`ERF(X)` computes the error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERF(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`, of the same kind as\n`X` and lies in the range -1 \\leq erf (x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_erf\n\n  real(8) :: x = 0.17_8\n\n  x = erf(x)\n\nend program test_erf\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERF(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ERFC.json b/src/docs/ERFC.json index cdd67633..bf24835e 100644 --- a/src/docs/ERFC.json +++ b/src/docs/ERFC.json @@ -1,4 +1,4 @@ { - "keyword":"ERFC", - "docstr":"`ERFC` — Error function\n\n### Description\n`ERFC(X)` computes the complementary error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`. \nIt lies in the range 0 \\leq erfc (x) \\leq 2 .\n\n\n\n### Example\n\n ```\n\n\nprogram test_erfc\n\n  real(8) :: x = 0.17_8\n\n  x = erfc(x)\n\nend program test_erfc\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERFC(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ERFC", + "docstr": "`ERFC` — Error function\n\n### Description\n`ERFC(X)` computes the complementary error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`. \nIt lies in the range 0 \\leq erfc (x) \\leq 2 .\n\n\n\n### Example\n```\n\n\nprogram test_erfc\n\n  real(8) :: x = 0.17_8\n\n  x = erfc(x)\n\nend program test_erfc\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERFC(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ERFC_SCALED.json b/src/docs/ERFC_SCALED.json index 512e692f..58884946 100644 --- a/src/docs/ERFC_SCALED.json +++ b/src/docs/ERFC_SCALED.json @@ -1,4 +1,4 @@ { - "keyword":"ERFC_SCALED", - "docstr":"`ERFC_SCALED` — Error function\n\n### Description\n`ERFC_SCALED(X)` computes the exponentially-scaled complementary\nerror function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC_SCALED(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_erfc_scaled\n\n  real(8) :: x = 0.17_8\n\n  x = erfc_scaled(x)\n\nend program test_erfc_scaled\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ERFC_SCALED", + "docstr": "`ERFC_SCALED` — Error function\n\n### Description\n`ERFC_SCALED(X)` computes the exponentially-scaled complementary\nerror function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC_SCALED(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_erfc_scaled\n\n  real(8) :: x = 0.17_8\n\n  x = erfc_scaled(x)\n\nend program test_erfc_scaled\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ETIME.json b/src/docs/ETIME.json index d6e78dda..a5f64b63 100644 --- a/src/docs/ETIME.json +++ b/src/docs/ETIME.json @@ -1,4 +1,4 @@ { - "keyword":"ETIME", - "docstr":"`ETIME` — Execution time subroutine (or function)\n\n### Description\n`ETIME(VALUES, TIME)` returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to `VALUES(1) + VALUES(2)`.\n\n \nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | `VALUES(2)`: | System time in seconds. \n\n | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = ETIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the start of program execution.\n\n\n\n### Example\n\n ```\n\n\nprogram test_etime\n\n    integer(8) :: i, j\n\n    real, dimension(2) :: tarray\n\n    real :: result\n\n    call ETIME(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\n    do i=1,100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call ETIME(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\nend program test_etime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " -} \ No newline at end of file + "keyword": "ETIME", + "docstr": "`ETIME` — Execution time subroutine (or function)\n\n### Description\n`ETIME(VALUES, TIME)` returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to `VALUES(1) + VALUES(2)`.\n\n \nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | `VALUES(2)`: | System time in seconds. \n\n | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = ETIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the start of program execution.\n\n\n\n### Example\n```\n\n\nprogram test_etime\n\n    integer(8) :: i, j\n\n    real, dimension(2) :: tarray\n\n    real :: result\n\n    call ETIME(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\n    do i=1,100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call ETIME(tarray, result)\n\n    print *, result\n\n    print *, tarray(1)\n\n    print *, tarray(2)\n\nend program test_etime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " +} diff --git a/src/docs/EVENT_QUERY.json b/src/docs/EVENT_QUERY.json index 1d550304..e83405e5 100644 --- a/src/docs/EVENT_QUERY.json +++ b/src/docs/EVENT_QUERY.json @@ -1,4 +1,4 @@ { - "keyword":"EVENT_QUERY", - "docstr":"`EVENT_QUERY` — Query whether a coarray event has occurred\n\n### Description\n`EVENT_QUERY` assignes the number of events to `COUNT` which have been\nposted to the `EVENT` variable and not yet been removed by calling\n`EVENT WAIT`. When `STAT` is present and the invokation was successful,\nit is assigned the value 0. If it is present and the invokation has failed,\nit is assigned a positive value and `COUNT` is assigned the value -1.\n\n\n\n### Syntax\n`CALL EVENT_QUERY (EVENT, COUNT [, STAT])`\n\n\n### Arguments\n\n \n,\ndefined in `ISO_FORTRAN_ENV`; shall not be coindexed. \n\n | `COUNT` | (intent(out))Scalar integer with at least the\nprecision of default integer. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  implicit none\n\n  type(event_type) :: event_value_has_been_set[*]\n\n  integer :: cnt\n\n  if (this_image() == 1) then\n\n    call event_query (event_value_has_been_set, cnt)\n\n    if (cnt > 0) write(*,*) \"Value has been set\"\n\n  elseif (this_image() == 2) then\n\n    event post (event_value_has_been_set[1])\n\n  end if\n\nend program atomic\n\n```\n\n \n\n### Standard\nTS 18508 or later\n\n\n\n### Class\n subroutine\n\n\n" -} \ No newline at end of file + "keyword": "EVENT_QUERY", + "docstr": "`EVENT_QUERY` — Query whether a coarray event has occurred\n\n### Description\n`EVENT_QUERY` assignes the number of events to `COUNT` which have been\nposted to the `EVENT` variable and not yet been removed by calling\n`EVENT WAIT`. When `STAT` is present and the invokation was successful,\nit is assigned the value 0. If it is present and the invokation has failed,\nit is assigned a positive value and `COUNT` is assigned the value -1.\n\n\n\n### Syntax\n`CALL EVENT_QUERY (EVENT, COUNT [, STAT])`\n\n\n### Arguments\n\n \n,\ndefined in `ISO_FORTRAN_ENV`; shall not be coindexed. \n\n | `COUNT` | (intent(out))Scalar integer with at least the\nprecision of default integer. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n  use iso_fortran_env\n\n  implicit none\n\n  type(event_type) :: event_value_has_been_set[*]\n\n  integer :: cnt\n\n  if (this_image() == 1) then\n\n    call event_query (event_value_has_been_set, cnt)\n\n    if (cnt > 0) write(*,*) \"Value has been set\"\n\n  elseif (this_image() == 2) then\n\n    event post (event_value_has_been_set[1])\n\n  end if\n\nend program atomic\n\n```\n\n \n\n### Standard\nTS 18508 or later\n\n\n\n### Class\n subroutine\n\n\n" +} diff --git a/src/docs/EXECUTE_COMMAND_LINE.json b/src/docs/EXECUTE_COMMAND_LINE.json index 61b1e341..164a8d98 100644 --- a/src/docs/EXECUTE_COMMAND_LINE.json +++ b/src/docs/EXECUTE_COMMAND_LINE.json @@ -1,4 +1,4 @@ { - "keyword":"EXECUTE_COMMAND_LINE", - "docstr":"`EXECUTE_COMMAND_LINE` — Execute a shell command\n\n### Description\n`EXECUTE_COMMAND_LINE` runs a shell command, synchronously or\nasynchronously.\n\n \nThe `COMMAND` argument is passed to the shell and executed, using\nthe C library's `system` call. (The shell is `sh` on Unix\nsystems, and `cmd.exe` on Windows.) If `WAIT` is present\nand has the value false, the execution of the command is asynchronous\nif the system supports it; otherwise, the command is executed\nsynchronously.\n\n \n\nThe three last arguments allow the user to get status information. After\nsynchronous execution, `EXITSTAT` contains the integer exit code of\nthe command, as returned by `system`. `CMDSTAT` is set to zero\nif the command line was executed (whatever its exit status was). \n`CMDMSG` is assigned an error message if an error has occurred.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n`CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])`\n\n\n### Arguments\n\n \n scalar. \n\n | `WAIT` | (Optional) Shall be a default `LOGICAL` scalar. \n\n | `EXITSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDMSG` | (Optional) Shall be an `CHARACTER` scalar of the\ndefault kind.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test_exec\n\n  integer :: i\n\n\n  call execute_command_line (\"external_prog.exe\", exitstat=i)\n\n  print *, \"Exit status of external_prog.exe was \", i\n\n\n  call execute_command_line (\"reindex_files.exe\", wait=.false.)\n\n  print *, \"Now reindexing files in the background\"\n\n\nend program test_exec\n\n```\n\n\n\n### Notes\n\nBecause this intrinsic is implemented in terms of the `system`function call, its behavior with respect to signaling is processor\ndependent. In particular, on POSIX-compliant systems, the SIGINT and\nSIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As\nsuch, if the parent process is terminated, the child process might not be\nterminated alongside.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM\n" -} \ No newline at end of file + "keyword": "EXECUTE_COMMAND_LINE", + "docstr": "`EXECUTE_COMMAND_LINE` — Execute a shell command\n\n### Description\n`EXECUTE_COMMAND_LINE` runs a shell command, synchronously or\nasynchronously.\n\n \nThe `COMMAND` argument is passed to the shell and executed, using\nthe C library's `system` call. (The shell is `sh` on Unix\nsystems, and `cmd.exe` on Windows.) If `WAIT` is present\nand has the value false, the execution of the command is asynchronous\nif the system supports it; otherwise, the command is executed\nsynchronously.\n\n \n\nThe three last arguments allow the user to get status information. After\nsynchronous execution, `EXITSTAT` contains the integer exit code of\nthe command, as returned by `system`. `CMDSTAT` is set to zero\nif the command line was executed (whatever its exit status was). \n`CMDMSG` is assigned an error message if an error has occurred.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n`CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])`\n\n\n### Arguments\n\n \n scalar. \n\n | `WAIT` | (Optional) Shall be a default `LOGICAL` scalar. \n\n | `EXITSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDMSG` | (Optional) Shall be an `CHARACTER` scalar of the\ndefault kind.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_exec\n\n  integer :: i\n\n\n  call execute_command_line (\"external_prog.exe\", exitstat=i)\n\n  print *, \"Exit status of external_prog.exe was \", i\n\n\n  call execute_command_line (\"reindex_files.exe\", wait=.false.)\n\n  print *, \"Now reindexing files in the background\"\n\n\nend program test_exec\n\n```\n\n\n\n### Notes\n\nBecause this intrinsic is implemented in terms of the `system`function call, its behavior with respect to signaling is processor\ndependent. In particular, on POSIX-compliant systems, the SIGINT and\nSIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As\nsuch, if the parent process is terminated, the child process might not be\nterminated alongside.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM\n" +} diff --git a/src/docs/EXIT.json b/src/docs/EXIT.json index b2491e13..ca3711dc 100644 --- a/src/docs/EXIT.json +++ b/src/docs/EXIT.json @@ -1,4 +1,4 @@ { - "keyword":"EXIT", - "docstr":"`EXIT` — Exit the program with status.\n\n### Description\n`EXIT` causes immediate termination of the program with status. If status\nis omitted it returns the canonical success for the system. All Fortran\nI/O units are closed.\n\n\n\n### Syntax\n`CALL EXIT([STATUS])`\n\n\n### Arguments\n\n \n of the default kind.\n\n\n\n\n\n\n### Return value\n`STATUS` is passed to the parent process on exit.\n\n\n\n### Example\n\n ```\n\n\nprogram test_exit\n\n  integer :: STATUS = 0\n\n  print *, 'This program is going to exit.'\n\n  call EXIT(STATUS)\n\nend program test_exit\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT, KILL\n" -} \ No newline at end of file + "keyword": "EXIT", + "docstr": "`EXIT` — Exit the program with status.\n\n### Description\n`EXIT` causes immediate termination of the program with status. If status\nis omitted it returns the canonical success for the system. All Fortran\nI/O units are closed.\n\n\n\n### Syntax\n`CALL EXIT([STATUS])`\n\n\n### Arguments\n\n \n of the default kind.\n\n\n\n\n\n\n### Return value\n`STATUS` is passed to the parent process on exit.\n\n\n\n### Example\n```\n\n\nprogram test_exit\n\n  integer :: STATUS = 0\n\n  print *, 'This program is going to exit.'\n\n  call EXIT(STATUS)\n\nend program test_exit\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT, KILL\n" +} diff --git a/src/docs/EXP.json b/src/docs/EXP.json index c48b9352..3cd7506a 100644 --- a/src/docs/EXP.json +++ b/src/docs/EXP.json @@ -1,4 +1,4 @@ { - "keyword":"EXP", - "docstr":"`EXP` — Exponential function\n\n### Description\n`EXP(X)` computes the base e exponential of `X`.\n\n\n\n### Syntax\n`RESULT = EXP(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_exp\n\n  real :: x = 1.0\n\n  x = exp(x)\n\nend program test_exp\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `EXP(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DEXP(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CEXP(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "EXP", + "docstr": "`EXP` — Exponential function\n\n### Description\n`EXP(X)` computes the base e exponential of `X`.\n\n\n\n### Syntax\n`RESULT = EXP(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_exp\n\n  real :: x = 1.0\n\n  x = exp(x)\n\nend program test_exp\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `EXP(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DEXP(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CEXP(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/EXPONENT.json b/src/docs/EXPONENT.json index 5f379dfc..adb65340 100644 --- a/src/docs/EXPONENT.json +++ b/src/docs/EXPONENT.json @@ -1,4 +1,4 @@ { - "keyword":"EXPONENT", - "docstr":"`EXPONENT` — Exponent function\n\n### Description\n`EXPONENT(X)` returns the value of the exponent part of `X`. If `X`\nis zero the value returned is zero.\n\n\n\n### Syntax\n`RESULT = EXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type default `INTEGER`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_exponent\n\n  real :: x = 1.0\n\n  integer :: i\n\n  i = exponent(x)\n\n  print *, i\n\n  print *, exponent(0.0)\n\nend program test_exponent\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "EXPONENT", + "docstr": "`EXPONENT` — Exponent function\n\n### Description\n`EXPONENT(X)` returns the value of the exponent part of `X`. If `X`\nis zero the value returned is zero.\n\n\n\n### Syntax\n`RESULT = EXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type default `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_exponent\n\n  real :: x = 1.0\n\n  integer :: i\n\n  i = exponent(x)\n\n  print *, i\n\n  print *, exponent(0.0)\n\nend program test_exponent\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/EXTENDS_TYPE_OF.json b/src/docs/EXTENDS_TYPE_OF.json index b4d0fe5a..24f216ca 100644 --- a/src/docs/EXTENDS_TYPE_OF.json +++ b/src/docs/EXTENDS_TYPE_OF.json @@ -1,4 +1,4 @@ { - "keyword":"EXTENDS_TYPE_OF", - "docstr":"`EXTENDS_TYPE_OF` — Query dynamic type for extension\n\n### Description\nQuery dynamic type for extension.\n\n\n\n### Syntax\n`RESULT = EXTENDS_TYPE_OF(A, MOLD)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `MOLD` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and only if\nthe dynamic type of A is an extension type of the dynamic type of MOLD.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSAME_TYPE_AS\n" -} \ No newline at end of file + "keyword": "EXTENDS_TYPE_OF", + "docstr": "`EXTENDS_TYPE_OF` — Query dynamic type for extension\n\n### Description\nQuery dynamic type for extension.\n\n\n\n### Syntax\n`RESULT = EXTENDS_TYPE_OF(A, MOLD)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `MOLD` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and only if\nthe dynamic type of A is an extension type of the dynamic type of MOLD.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSAME_TYPE_AS\n" +} diff --git a/src/docs/FDATE.json b/src/docs/FDATE.json index 8678aa74..097f679a 100644 --- a/src/docs/FDATE.json +++ b/src/docs/FDATE.json @@ -1,4 +1,4 @@ { - "keyword":"FDATE", - "docstr":"`FDATE` — Get the current time as a string\n\n### Description\n`FDATE(DATE)` returns the current date (using the same format as\n`CTIME`) in `DATE`. It is equivalent to CALL CTIME(DATE,\nTIME()).\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `DATE = FDATE()`.\n\n\n\n\n\n\n### Arguments\n\n \n of the\ndefault kind. It is an `INTENT(OUT)` argument. If the length of\nthis variable is too short for the date and time string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe current date and time as a string.\n\n\n\n### Example\n\n ```\n\n\nprogram test_fdate\n\n    integer(8) :: i, j\n\n    character(len=30) :: date\n\n    call fdate(date)\n\n    print *, 'Program started on ', date\n\n    do i = 1, 100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call fdate(date)\n\n    print *, 'Program ended on ', date\n\nend program test_fdate\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, CTIME\n" -} \ No newline at end of file + "keyword": "FDATE", + "docstr": "`FDATE` — Get the current time as a string\n\n### Description\n`FDATE(DATE)` returns the current date (using the same format as\n`CTIME`) in `DATE`. It is equivalent to CALL CTIME(DATE,\nTIME()).\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `DATE = FDATE()`.\n\n\n\n\n\n\n### Arguments\n\n \n of the\ndefault kind. It is an `INTENT(OUT)` argument. If the length of\nthis variable is too short for the date and time string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe current date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_fdate\n\n    integer(8) :: i, j\n\n    character(len=30) :: date\n\n    call fdate(date)\n\n    print *, 'Program started on ', date\n\n    do i = 1, 100000000 ! Just a delay\n\n        j = i * i - i\n\n    end do\n\n    call fdate(date)\n\n    print *, 'Program ended on ', date\n\nend program test_fdate\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, CTIME\n" +} diff --git a/src/docs/FGET.json b/src/docs/FGET.json index 8896d7b1..1fda27eb 100644 --- a/src/docs/FGET.json +++ b/src/docs/FGET.json @@ -1,4 +1,4 @@ { - "keyword":"FGET", - "docstr":"`FGET` — Read a single character in stream mode from stdin\n\n### Description\nRead a single character in stream mode from stdin by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGET(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file, and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_fget\n\n  INTEGER, PARAMETER :: strlen = 100\n\n  INTEGER :: status, i = 1\n\n  CHARACTER(len=strlen) :: str = \"\"\n\n\n  WRITE (*,*) 'Enter text:'\n\n  DO\n\n    CALL fget(str(i:i), status)\n\n    if (status /= 0 .OR. i > strlen) exit\n\n    i = i + 1\n\n  END DO\n\n  WRITE (*,*) TRIM(str)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGETC, FPUT, FPUTC\n" -} \ No newline at end of file + "keyword": "FGET", + "docstr": "`FGET` — Read a single character in stream mode from stdin\n\n### Description\nRead a single character in stream mode from stdin by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGET(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file, and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fget\n\n  INTEGER, PARAMETER :: strlen = 100\n\n  INTEGER :: status, i = 1\n\n  CHARACTER(len=strlen) :: str = \"\"\n\n\n  WRITE (*,*) 'Enter text:'\n\n  DO\n\n    CALL fget(str(i:i), status)\n\n    if (status /= 0 .OR. i > strlen) exit\n\n    i = i + 1\n\n  END DO\n\n  WRITE (*,*) TRIM(str)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGETC, FPUT, FPUTC\n" +} diff --git a/src/docs/FGETC.json b/src/docs/FGETC.json index c375f6dc..3fd30125 100644 --- a/src/docs/FGETC.json +++ b/src/docs/FGETC.json @@ -1,4 +1,4 @@ { - "keyword":"FGETC", - "docstr":"`FGETC` — Read a single character in stream mode\n\n### Description\nRead a single character in stream mode by bypassing normal formatted output. \nStream I/O should not be mixed with normal record-oriented (formatted or\nunformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility\nwith *g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGETC(UNIT, C)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_fgetc\n\n  INTEGER :: fd = 42, status\n\n  CHARACTER :: c\n\n\n  OPEN(UNIT=fd, FILE=\"/etc/passwd\", ACTION=\"READ\", STATUS = \"OLD\")\n\n  DO\n\n    CALL fgetc(fd, c, status)\n\n    IF (status /= 0) EXIT\n\n    call fput(c)\n\n  END DO\n\n  CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGET, FPUT, FPUTC\n" -} \ No newline at end of file + "keyword": "FGETC", + "docstr": "`FGETC` — Read a single character in stream mode\n\n### Description\nRead a single character in stream mode by bypassing normal formatted output. \nStream I/O should not be mixed with normal record-oriented (formatted or\nunformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility\nwith *g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGETC(UNIT, C)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fgetc\n\n  INTEGER :: fd = 42, status\n\n  CHARACTER :: c\n\n\n  OPEN(UNIT=fd, FILE=\"/etc/passwd\", ACTION=\"READ\", STATUS = \"OLD\")\n\n  DO\n\n    CALL fgetc(fd, c, status)\n\n    IF (status /= 0) EXIT\n\n    call fput(c)\n\n  END DO\n\n  CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGET, FPUT, FPUTC\n" +} diff --git a/src/docs/FINDLOC.json b/src/docs/FINDLOC.json index 0914b6f2..589659e4 100644 --- a/src/docs/FINDLOC.json +++ b/src/docs/FINDLOC.json @@ -1,4 +1,4 @@ { - "keyword":"FINDLOC", - "docstr":"`FINDLOC` — Search an array for a value\n\n### Description\nDetermines the location of the element in the array with the value given in the VALUE argument, or, if the DIM argument is supplied, determines the locations of the maximum element along each row of the array in the DIM direction. If MASK is present, only the elements for which MASK is .TRUE. are considered. If more than one element in the array has the value VALUE, the location returned is that of the first such element in array element order if the BACK is not present or if it is .FALSE.. If BACK is true, the location returned is that of the last such element. If the array has zero size, or all of the elements of MASK are .FALSE., then the result is an array of zeroes. Similarly, if DIM is supplied and all of the elements of MASK along a given row are zero, the result value for that row is zero.\n### Standard\nFortran 2008 and later.\n### Class\nTransformational function\n### Syntax\nRESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])\nRESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])\n### Arguments\n- ARRAY: Shall be an array of intrinsic type.\n- VALUE: A scalar of intrinsic type which is in type conformance with ARRAY.\n- DIM: (Optional) Shall be a scalar of type INTEGER, with a value between one and the rank of ARRAY, inclusive. It may not be an optional dummy argument.\n- KIND: (Optional) An INTEGER initialization expression indicating the kind parameter of the result.\n- BACK: (Optional) A scalar of type LOGICAL.\n### Return value\nIf DIM is absent, the result is a rank-one array with a length equal to the rank of ARRAY. If DIM is present, the result is an array with a rank one less than the rank of ARRAY, and a size corresponding to the size of ARRAY with the DIM dimension removed. If DIM is present and ARRAY has a rank of one, the result is a scalar. If the optional argument KIND is present, the result is an integer of kind KIND, otherwise it is of default kind.\n" -} \ No newline at end of file + "keyword": "FINDLOC", + "docstr": "`FINDLOC` — Search an array for a value\n\n### Description\nDetermines the location of the element in the array with the value given in the VALUE argument, or, if the DIM argument is supplied, determines the locations of the maximum element along each row of the array in the DIM direction. If MASK is present, only the elements for which MASK is .TRUE. are considered. If more than one element in the array has the value VALUE, the location returned is that of the first such element in array element order if the BACK is not present or if it is .FALSE.. If BACK is true, the location returned is that of the last such element. If the array has zero size, or all of the elements of MASK are .FALSE., then the result is an array of zeroes. Similarly, if DIM is supplied and all of the elements of MASK along a given row are zero, the result value for that row is zero.\n### Standard\nFortran 2008 and later.\n### Class\nTransformational function\n### Syntax\nRESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])\nRESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])\n### Arguments\n- ARRAY: Shall be an array of intrinsic type.\n- VALUE: A scalar of intrinsic type which is in type conformance with ARRAY.\n- DIM: (Optional) Shall be a scalar of type INTEGER, with a value between one and the rank of ARRAY, inclusive. It may not be an optional dummy argument.\n- KIND: (Optional) An INTEGER initialization expression indicating the kind parameter of the result.\n- BACK: (Optional) A scalar of type LOGICAL.\n### Return value\nIf DIM is absent, the result is a rank-one array with a length equal to the rank of ARRAY. If DIM is present, the result is an array with a rank one less than the rank of ARRAY, and a size corresponding to the size of ARRAY with the DIM dimension removed. If DIM is present and ARRAY has a rank of one, the result is a scalar. If the optional argument KIND is present, the result is an integer of kind KIND, otherwise it is of default kind.\n" +} diff --git a/src/docs/FLOOR.json b/src/docs/FLOOR.json index 8ce1ff94..61fcf940 100644 --- a/src/docs/FLOOR.json +++ b/src/docs/FLOOR.json @@ -1,4 +1,4 @@ { - "keyword":"FLOOR", - "docstr":"`FLOOR` — Integer floor function\n\n### Description\n`FLOOR(A)` returns the greatest integer less than or equal to `X`.\n\n\n\n### Syntax\n`RESULT = FLOOR(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand of default-kind `INTEGER` otherwise.\n\n\n\n### Example\n\n ```\n\n\nprogram test_floor\n\n    real :: x = 63.29\n\n    real :: y = -63.59\n\n    print *, floor(x) ! returns 63\n\n    print *, floor(y) ! returns -64\n\nend program test_floor\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, NINT\n\n " -} \ No newline at end of file + "keyword": "FLOOR", + "docstr": "`FLOOR` — Integer floor function\n\n### Description\n`FLOOR(A)` returns the greatest integer less than or equal to `X`.\n\n\n\n### Syntax\n`RESULT = FLOOR(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand of default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_floor\n\n    real :: x = 63.29\n\n    real :: y = -63.59\n\n    print *, floor(x) ! returns 63\n\n    print *, floor(y) ! returns -64\n\nend program test_floor\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, NINT\n\n " +} diff --git a/src/docs/FLUSH.json b/src/docs/FLUSH.json index 6c57fbc1..32ba8e5d 100644 --- a/src/docs/FLUSH.json +++ b/src/docs/FLUSH.json @@ -1,4 +1,4 @@ { - "keyword":"FLUSH", - "docstr":"`FLUSH` — Flush I/O unit(s)\n\n### Description\nFlushes Fortran unit(s) currently open for output. Without the optional\nargument, all units are flushed, otherwise just the unit specified.\n\n\n\n### Syntax\n`CALL FLUSH(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Notes\nBeginning with the Fortran 2003 standard, there is a `FLUSH`statement that should be preferred over the `FLUSH` intrinsic.\n\n \nThe `FLUSH` intrinsic and the Fortran 2003 `FLUSH` statement\nhave identical effect: they flush the runtime library's I/O buffer so\nthat the data becomes visible to other processes. This does not guarantee\nthat the data is committed to disk.\n\n \n\nOn POSIX systems, you can request that all data is transferred to the\nstorage device by calling the `fsync` function, with the POSIX file\ndescriptor of the I/O unit as argument (retrieved with GNU intrinsic\n`FNUM`). The following example shows how:\n\n \n
            ! Declare the interface for POSIX fsync function\n            interface\n              function fsync (fd) bind(c,name=\"fsync\")\n              use iso_c_binding, only: c_int\n                integer(c_int), value :: fd\n                integer(c_int) :: fsync\n              end function fsync\n            end interface\n          \n            ! Variable declaration\n            integer :: ret\n          \n            ! Opening unit 10\n            open (10,file=\"foo\")\n          \n            ! ...\n            ! Perform I/O on unit 10\n            ! ...\n          \n            ! Flush and sync\n            flush(10)\n            ret = fsync(fnum(10))\n          \n            ! Handle possible error\n            if (ret /= 0) stop \"Error calling FSYNC\"\n
\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "FLUSH", + "docstr": "`FLUSH` — Flush I/O unit(s)\n\n### Description\nFlushes Fortran unit(s) currently open for output. Without the optional\nargument, all units are flushed, otherwise just the unit specified.\n\n\n\n### Syntax\n`CALL FLUSH(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Notes\nBeginning with the Fortran 2003 standard, there is a `FLUSH`statement that should be preferred over the `FLUSH` intrinsic.\n\n \nThe `FLUSH` intrinsic and the Fortran 2003 `FLUSH` statement\nhave identical effect: they flush the runtime library's I/O buffer so\nthat the data becomes visible to other processes. This does not guarantee\nthat the data is committed to disk.\n\n \n\nOn POSIX systems, you can request that all data is transferred to the\nstorage device by calling the `fsync` function, with the POSIX file\ndescriptor of the I/O unit as argument (retrieved with GNU intrinsic\n`FNUM`). The following example shows how:\n\n \n
            ! Declare the interface for POSIX fsync function\n            interface\n              function fsync (fd) bind(c,name=\"fsync\")\n              use iso_c_binding, only: c_int\n                integer(c_int), value :: fd\n                integer(c_int) :: fsync\n              end function fsync\n            end interface\n          \n            ! Variable declaration\n            integer :: ret\n          \n            ! Opening unit 10\n            open (10,file=\"foo\")\n          \n            ! ...\n            ! Perform I/O on unit 10\n            ! ...\n          \n            ! Flush and sync\n            flush(10)\n            ret = fsync(fnum(10))\n          \n            ! Handle possible error\n            if (ret /= 0) stop \"Error calling FSYNC\"\n
\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/FNUM.json b/src/docs/FNUM.json index f0670c29..ebaec3cf 100644 --- a/src/docs/FNUM.json +++ b/src/docs/FNUM.json @@ -1,4 +1,4 @@ { - "keyword":"FNUM", - "docstr":"`FNUM` — File number function\n\n### Description\n`FNUM(UNIT)` returns the POSIX file descriptor number corresponding to the\nopen Fortran I/O unit `UNIT`.\n\n\n\n### Syntax\n`RESULT = FNUM(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n\n ```\n\n\nprogram test_fnum\n\n  integer :: i\n\n  open (unit=10, status = \"scratch\")\n\n  i = fnum(10)\n\n  print *, i\n\n  close (10)\n\nend program test_fnum\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" -} \ No newline at end of file + "keyword": "FNUM", + "docstr": "`FNUM` — File number function\n\n### Description\n`FNUM(UNIT)` returns the POSIX file descriptor number corresponding to the\nopen Fortran I/O unit `UNIT`.\n\n\n\n### Syntax\n`RESULT = FNUM(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_fnum\n\n  integer :: i\n\n  open (unit=10, status = \"scratch\")\n\n  i = fnum(10)\n\n  print *, i\n\n  close (10)\n\nend program test_fnum\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" +} diff --git a/src/docs/FPUT.json b/src/docs/FPUT.json index 7bd9abd3..831c66a2 100644 --- a/src/docs/FPUT.json +++ b/src/docs/FPUT.json @@ -1,4 +1,4 @@ { - "keyword":"FPUT", - "docstr":"`FPUT` — Write a single character in stream mode to stdout\n\n### Description\nWrite a single character in stream mode to stdout by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUT(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_fput\n\n  CHARACTER(len=10) :: str = \"gfortran\"\n\n  INTEGER :: i\n\n  DO i = 1, len_trim(str)\n\n    CALL fput(str(i:i))\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUTC, FGET, FGETC\n" -} \ No newline at end of file + "keyword": "FPUT", + "docstr": "`FPUT` — Write a single character in stream mode to stdout\n\n### Description\nWrite a single character in stream mode to stdout by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUT(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fput\n\n  CHARACTER(len=10) :: str = \"gfortran\"\n\n  INTEGER :: i\n\n  DO i = 1, len_trim(str)\n\n    CALL fput(str(i:i))\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUTC, FGET, FGETC\n" +} diff --git a/src/docs/FPUTC.json b/src/docs/FPUTC.json index 30355d06..4c0a6cf4 100644 --- a/src/docs/FPUTC.json +++ b/src/docs/FPUTC.json @@ -1,4 +1,4 @@ { - "keyword":"FPUTC", - "docstr":"`FPUTC` — Write a single character in stream mode\n\n### Description\nWrite a single character in stream mode by bypassing normal formatted\noutput. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUTC(UNIT, C)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_fputc\n\n  CHARACTER(len=10) :: str = \"gfortran\"\n\n  INTEGER :: fd = 42, i\n\n\n  OPEN(UNIT = fd, FILE = \"out\", ACTION = \"WRITE\", STATUS=\"NEW\")\n\n  DO i = 1, len_trim(str)\n\n    CALL fputc(fd, str(i:i))\n\n  END DO\n\n  CLOSE(fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUT, FGET, FGETC\n" -} \ No newline at end of file + "keyword": "FPUTC", + "docstr": "`FPUTC` — Write a single character in stream mode\n\n### Description\nWrite a single character in stream mode by bypassing normal formatted\noutput. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUTC(UNIT, C)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fputc\n\n  CHARACTER(len=10) :: str = \"gfortran\"\n\n  INTEGER :: fd = 42, i\n\n\n  OPEN(UNIT = fd, FILE = \"out\", ACTION = \"WRITE\", STATUS=\"NEW\")\n\n  DO i = 1, len_trim(str)\n\n    CALL fputc(fd, str(i:i))\n\n  END DO\n\n  CLOSE(fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUT, FGET, FGETC\n" +} diff --git a/src/docs/FRACTION.json b/src/docs/FRACTION.json index 22f6d02a..a1e4ee65 100644 --- a/src/docs/FRACTION.json +++ b/src/docs/FRACTION.json @@ -1,4 +1,4 @@ { - "keyword":"FRACTION", - "docstr":"`FRACTION` — Fractional part of the model representation\n\n### Description\n`FRACTION(X)` returns the fractional part of the model\nrepresentation of `X`.\n\n\n\n### Syntax\n`Y = FRACTION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as the argument. \nThe fractional part of the model representation of `X` is returned;\nit is `X * RADIX(X)**(-EXPONENT(X))`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_fraction\n\n  real :: x\n\n  x = 178.1387e-4\n\n  print *, fraction(x), x * radix(x)**(-exponent(x))\n\nend program test_fraction\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "FRACTION", + "docstr": "`FRACTION` — Fractional part of the model representation\n\n### Description\n`FRACTION(X)` returns the fractional part of the model\nrepresentation of `X`.\n\n\n\n### Syntax\n`Y = FRACTION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as the argument. \nThe fractional part of the model representation of `X` is returned;\nit is `X * RADIX(X)**(-EXPONENT(X))`.\n\n\n\n### Example\n```\n\n\nprogram test_fraction\n\n  real :: x\n\n  x = 178.1387e-4\n\n  print *, fraction(x), x * radix(x)**(-exponent(x))\n\nend program test_fraction\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/FREE.json b/src/docs/FREE.json index 76701d68..c7b3a7b8 100644 --- a/src/docs/FREE.json +++ b/src/docs/FREE.json @@ -1,4 +1,4 @@ { - "keyword":"FREE", - "docstr":"`FREE` — Frees memory\n\n### Description\nFrees memory previously allocated by `MALLOC`. The `FREE`intrinsic is an extension intended to be used with Cray pointers, and is\nprovided in GNU Fortran to allow user to compile legacy code. For\nnew code using Fortran 95 pointers, the memory de-allocation intrinsic is\n`DEALLOCATE`.\n\n\n\n### Syntax\n`CALL FREE(PTR)`\n\n\n### Arguments\n\n \n. It represents the\nlocation of the memory that should be de-allocated.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\nSee `MALLOC` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nMALLOC\n" -} \ No newline at end of file + "keyword": "FREE", + "docstr": "`FREE` — Frees memory\n\n### Description\nFrees memory previously allocated by `MALLOC`. The `FREE`intrinsic is an extension intended to be used with Cray pointers, and is\nprovided in GNU Fortran to allow user to compile legacy code. For\nnew code using Fortran 95 pointers, the memory de-allocation intrinsic is\n`DEALLOCATE`.\n\n\n\n### Syntax\n`CALL FREE(PTR)`\n\n\n### Arguments\n\n \n. It represents the\nlocation of the memory that should be de-allocated.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\nSee `MALLOC` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nMALLOC\n" +} diff --git a/src/docs/FSEEK.json b/src/docs/FSEEK.json index 71e7dff5..b062c165 100644 --- a/src/docs/FSEEK.json +++ b/src/docs/FSEEK.json @@ -1,4 +1,4 @@ { - "keyword":"FSEEK", - "docstr":"`FSEEK` — Low level file positioning subroutine\n\n### Description\nMoves `UNIT` to the specified `OFFSET`. If `WHENCE`\nis set to 0, the `OFFSET` is taken as an absolute value `SEEK_SET`,\nif set to 1, `OFFSET` is taken to be relative to the current position\n`SEEK_CUR`, and if set to 2 relative to the end of the file `SEEK_END`. \nOn error, `STATUS` is set to a nonzero value. If `STATUS` the seek\nfails silently.\n\n \nThis intrinsic routine is not fully backwards compatible with *g77*. \nIn *g77*, the `FSEEK` takes a statement label instead of a\n`STATUS` variable. If FSEEK is used in old code, change\n \n
            CALL FSEEK(UNIT, OFFSET, WHENCE, *label)\n
\n \nto\n \n
            INTEGER :: status\n            CALL FSEEK(UNIT, OFFSET, WHENCE, status)\n            IF (status /= 0) GOTO label\n
\n \nPlease note that GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n`CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])`\n\n\n### Arguments\n\n \n. \n\n | `OFFSET` | Shall be a scalar of type `INTEGER`. \n\n | `WHENCE` | Shall be a scalar of type `INTEGER`. \nIts value shall be either 0, 1 or 2. \n\n | `STATUS` | (Optional) shall be a scalar of type\n`INTEGER(4)`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_fseek\n\n  INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2\n\n  INTEGER :: fd, offset, ierr\n\n\n  ierr = 0\n\n  offset = 5\n\n  fd = 10\n\n\n  OPEN(UNIT=fd, FILE=\"fseek.test\")\n\n  CALL FSEEK(fd, offset, SEEK_SET, ierr) ! move to OFFSET\n\n  print *, FTELL(fd), ierr\n\n\n  CALL FSEEK(fd, 0, SEEK_END, ierr) ! move to end\n\n  print *, FTELL(fd), ierr\n\n\n  CALL FSEEK(fd, 0, SEEK_SET, ierr) ! move to beginning\n\n  print *, FTELL(fd), ierr\n\n\n  CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nFTELL\n" -} \ No newline at end of file + "keyword": "FSEEK", + "docstr": "`FSEEK` — Low level file positioning subroutine\n\n### Description\nMoves `UNIT` to the specified `OFFSET`. If `WHENCE`\nis set to 0, the `OFFSET` is taken as an absolute value `SEEK_SET`,\nif set to 1, `OFFSET` is taken to be relative to the current position\n`SEEK_CUR`, and if set to 2 relative to the end of the file `SEEK_END`. \nOn error, `STATUS` is set to a nonzero value. If `STATUS` the seek\nfails silently.\n\n \nThis intrinsic routine is not fully backwards compatible with *g77*. \nIn *g77*, the `FSEEK` takes a statement label instead of a\n`STATUS` variable. If FSEEK is used in old code, change\n \n
            CALL FSEEK(UNIT, OFFSET, WHENCE, *label)\n
\n \nto\n \n
            INTEGER :: status\n            CALL FSEEK(UNIT, OFFSET, WHENCE, status)\n            IF (status /= 0) GOTO label\n
\n \nPlease note that GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n`CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])`\n\n\n### Arguments\n\n \n. \n\n | `OFFSET` | Shall be a scalar of type `INTEGER`. \n\n | `WHENCE` | Shall be a scalar of type `INTEGER`. \nIts value shall be either 0, 1 or 2. \n\n | `STATUS` | (Optional) shall be a scalar of type\n`INTEGER(4)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fseek\n\n  INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2\n\n  INTEGER :: fd, offset, ierr\n\n\n  ierr = 0\n\n  offset = 5\n\n  fd = 10\n\n\n  OPEN(UNIT=fd, FILE=\"fseek.test\")\n\n  CALL FSEEK(fd, offset, SEEK_SET, ierr) ! move to OFFSET\n\n  print *, FTELL(fd), ierr\n\n\n  CALL FSEEK(fd, 0, SEEK_END, ierr) ! move to end\n\n  print *, FTELL(fd), ierr\n\n\n  CALL FSEEK(fd, 0, SEEK_SET, ierr) ! move to beginning\n\n  print *, FTELL(fd), ierr\n\n\n  CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nFTELL\n" +} diff --git a/src/docs/FSTAT.json b/src/docs/FSTAT.json index a06c0016..bb1aca9e 100644 --- a/src/docs/FSTAT.json +++ b/src/docs/FSTAT.json @@ -1,4 +1,4 @@ { - "keyword":"FSTAT", - "docstr":"`FSTAT` — Get file status\n\n### Description\n`FSTAT` is identical to STAT, except that information about an\nalready opened file is obtained.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FSTAT(UNIT, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat a link: LSTAT, to stat a file: STAT\n" -} \ No newline at end of file + "keyword": "FSTAT", + "docstr": "`FSTAT` — Get file status\n\n### Description\n`FSTAT` is identical to STAT, except that information about an\nalready opened file is obtained.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FSTAT(UNIT, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat a link: LSTAT, to stat a file: STAT\n" +} diff --git a/src/docs/FTELL.json b/src/docs/FTELL.json index 402117de..c90c5811 100644 --- a/src/docs/FTELL.json +++ b/src/docs/FTELL.json @@ -1,4 +1,4 @@ { - "keyword":"FTELL", - "docstr":"`FTELL` — Current stream position\n\n### Description\nRetrieves the current position within an open file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `OFFSET = FTELL(UNIT)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `UNIT` | Shall of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nIn either syntax, `OFFSET` is set to the current offset of unit\nnumber `UNIT`, or to -1 if the unit is not currently open.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_ftell\n\n  INTEGER :: i\n\n  OPEN(10, FILE=\"temp.dat\")\n\n  CALL ftell(10,i)\n\n  WRITE(*,*) i\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFSEEK\n" -} \ No newline at end of file + "keyword": "FTELL", + "docstr": "`FTELL` — Current stream position\n\n### Description\nRetrieves the current position within an open file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `OFFSET = FTELL(UNIT)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `UNIT` | Shall of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nIn either syntax, `OFFSET` is set to the current offset of unit\nnumber `UNIT`, or to -1 if the unit is not currently open.\n\n\n\n### Example\n```\n\n\nPROGRAM test_ftell\n\n  INTEGER :: i\n\n  OPEN(10, FILE=\"temp.dat\")\n\n  CALL ftell(10,i)\n\n  WRITE(*,*) i\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFSEEK\n" +} diff --git a/src/docs/GAMMA.json b/src/docs/GAMMA.json index a993ee5c..a38de730 100644 --- a/src/docs/GAMMA.json +++ b/src/docs/GAMMA.json @@ -1,4 +1,4 @@ { - "keyword":"GAMMA", - "docstr":"`GAMMA` — Gamma function\n\n### Description\n`GAMMA(X)` computes Gamma (\\Gamma) of `X`. For positive,\ninteger values of `X` the Gamma function simplifies to the factorial\nfunction \\Gamma(x)=(x-1)!.\n\n\n\n### Syntax\n`X = GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_gamma\n\n  real :: x = 1.0\n\n  x = gamma(x) ! returns 1.0\n\nend program test_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `GAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DGAMMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLogarithm of the Gamma function: LOG_GAMMA\n\n " -} \ No newline at end of file + "keyword": "GAMMA", + "docstr": "`GAMMA` — Gamma function\n\n### Description\n`GAMMA(X)` computes Gamma (\\Gamma) of `X`. For positive,\ninteger values of `X` the Gamma function simplifies to the factorial\nfunction \\Gamma(x)=(x-1)!.\n\n\n\n### Syntax\n`X = GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_gamma\n\n  real :: x = 1.0\n\n  x = gamma(x) ! returns 1.0\n\nend program test_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `GAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DGAMMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLogarithm of the Gamma function: LOG_GAMMA\n\n " +} diff --git a/src/docs/GERROR.json b/src/docs/GERROR.json index 07c4a5aa..9e428156 100644 --- a/src/docs/GERROR.json +++ b/src/docs/GERROR.json @@ -1,4 +1,4 @@ { - "keyword":"GERROR", - "docstr":"`GERROR` — Get last system error message\n\n### Description\nReturns the system error message corresponding to the last system error. \nThis resembles the functionality of `strerror(3)` in C.\n\n\n\n### Syntax\n`CALL GERROR(RESULT)`\n\n\n### Arguments\n\n \n and of default\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_gerror\n\n  CHARACTER(len=100) :: msg\n\n  CALL gerror(msg)\n\n  WRITE(*,*) msg\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO, PERROR\n" -} \ No newline at end of file + "keyword": "GERROR", + "docstr": "`GERROR` — Get last system error message\n\n### Description\nReturns the system error message corresponding to the last system error. \nThis resembles the functionality of `strerror(3)` in C.\n\n\n\n### Syntax\n`CALL GERROR(RESULT)`\n\n\n### Arguments\n\n \n and of default\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_gerror\n\n  CHARACTER(len=100) :: msg\n\n  CALL gerror(msg)\n\n  WRITE(*,*) msg\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO, PERROR\n" +} diff --git a/src/docs/GETARG.json b/src/docs/GETARG.json index 64121560..f608035c 100644 --- a/src/docs/GETARG.json +++ b/src/docs/GETARG.json @@ -1,4 +1,4 @@ { - "keyword":"GETARG", - "docstr":"`GETARG` — Get command line arguments\n\n### Description\nRetrieve the `POS`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_COMMAND_ARGUMENT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`CALL GETARG(POS, VALUE)`\n\n\n### Arguments\n\n \n and not wider than\nthe default integer kind; `POS` \\geq 0\n\n | `VALUE` | Shall be of type `CHARACTER` and of default\nkind. \n\n | `VALUE` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Return value\nAfter `GETARG` returns, the `VALUE` argument holds the\n`POS`th command line argument. If `VALUE` can not hold the\nargument, it is truncated to fit the length of `VALUE`. If there are\nless than `POS` arguments specified at the command line, `VALUE`\nwill be filled with blanks. If `POS` = 0, `VALUE` is set\nto the name of the program (on systems that support this feature).\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_getarg\n\n  INTEGER :: i\n\n  CHARACTER(len=32) :: arg\n\n\n  DO i = 1, iargc()\n\n    CALL getarg(i, arg)\n\n    WRITE (*,*) arg\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGNU Fortran 77 compatibility function: IARGC\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n" -} \ No newline at end of file + "keyword": "GETARG", + "docstr": "`GETARG` — Get command line arguments\n\n### Description\nRetrieve the `POS`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_COMMAND_ARGUMENT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`CALL GETARG(POS, VALUE)`\n\n\n### Arguments\n\n \n and not wider than\nthe default integer kind; `POS` \\geq 0\n\n | `VALUE` | Shall be of type `CHARACTER` and of default\nkind. \n\n | `VALUE` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Return value\nAfter `GETARG` returns, the `VALUE` argument holds the\n`POS`th command line argument. If `VALUE` can not hold the\nargument, it is truncated to fit the length of `VALUE`. If there are\nless than `POS` arguments specified at the command line, `VALUE`\nwill be filled with blanks. If `POS` = 0, `VALUE` is set\nto the name of the program (on systems that support this feature).\n\n\n\n### Example\n```\n\n\nPROGRAM test_getarg\n\n  INTEGER :: i\n\n  CHARACTER(len=32) :: arg\n\n\n  DO i = 1, iargc()\n\n    CALL getarg(i, arg)\n\n    WRITE (*,*) arg\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGNU Fortran 77 compatibility function: IARGC\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n" +} diff --git a/src/docs/GETCWD.json b/src/docs/GETCWD.json index 44caa889..1565b4b2 100644 --- a/src/docs/GETCWD.json +++ b/src/docs/GETCWD.json @@ -1,4 +1,4 @@ { - "keyword":"GETCWD", - "docstr":"`GETCWD` — Get current working directory\n\n### Description\nGet current working directory.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = GETCWD(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag. Returns 0 on success,\na system specific and nonzero error code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_getcwd\n\n  CHARACTER(len=255) :: cwd\n\n  CALL getcwd(cwd)\n\n  WRITE(*,*) TRIM(cwd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCHDIR\n" -} \ No newline at end of file + "keyword": "GETCWD", + "docstr": "`GETCWD` — Get current working directory\n\n### Description\nGet current working directory.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = GETCWD(C)`
\n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag. Returns 0 on success,\na system specific and nonzero error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_getcwd\n\n  CHARACTER(len=255) :: cwd\n\n  CALL getcwd(cwd)\n\n  WRITE(*,*) TRIM(cwd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCHDIR\n" +} diff --git a/src/docs/GETENV.json b/src/docs/GETENV.json index 0e071448..f373bce1 100644 --- a/src/docs/GETENV.json +++ b/src/docs/GETENV.json @@ -1,4 +1,4 @@ { - "keyword":"GETENV", - "docstr":"`GETENV` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_ENVIRONMENT_VARIABLE intrinsic defined by the Fortran\n2003 standard.\n\n \n\nNote that `GETENV` need not be thread-safe. It is the\nresponsibility of the user to ensure that the environment is not being\nupdated concurrently with a call to the `GETENV` intrinsic.\n\n\n\n\n### Syntax\n`CALL GETENV(NAME, VALUE)`\n\n\n### Arguments\n\n \n and of default kind. \n\n | `VALUE` | Shall be of type `CHARACTER` and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_getenv\n\n  CHARACTER(len=255) :: homedir\n\n  CALL getenv(\"HOME\", homedir)\n\n  WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_ENVIRONMENT_VARIABLE\n" -} \ No newline at end of file + "keyword": "GETENV", + "docstr": "`GETENV` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_ENVIRONMENT_VARIABLE intrinsic defined by the Fortran\n2003 standard.\n\n \n\nNote that `GETENV` need not be thread-safe. It is the\nresponsibility of the user to ensure that the environment is not being\nupdated concurrently with a call to the `GETENV` intrinsic.\n\n\n\n\n### Syntax\n`CALL GETENV(NAME, VALUE)`\n\n\n### Arguments\n\n \n and of default kind. \n\n | `VALUE` | Shall be of type `CHARACTER` and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n  CHARACTER(len=255) :: homedir\n\n  CALL getenv(\"HOME\", homedir)\n\n  WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_ENVIRONMENT_VARIABLE\n" +} diff --git a/src/docs/GETGID.json b/src/docs/GETGID.json index a28debb6..acdd9ffa 100644 --- a/src/docs/GETGID.json +++ b/src/docs/GETGID.json @@ -1,4 +1,4 @@ { - "keyword":"GETGID", - "docstr":"`GETGID` — Group ID function\n\n### Description\nReturns the numerical group ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETGID()`\n\n\n### Return value\nThe return value of `GETGID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETUID\n" -} \ No newline at end of file + "keyword": "GETGID", + "docstr": "`GETGID` — Group ID function\n\n### Description\nReturns the numerical group ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETGID()`\n\n\n### Return value\nThe return value of `GETGID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETUID\n" +} diff --git a/src/docs/GETLOG.json b/src/docs/GETLOG.json index b4da628e..51843360 100644 --- a/src/docs/GETLOG.json +++ b/src/docs/GETLOG.json @@ -1,4 +1,4 @@ { - "keyword":"GETLOG", - "docstr":"`GETLOG` — Get login name\n\n### Description\nGets the username under which the program is running.\n\n\n\n### Syntax\n`CALL GETLOG(C)`\n\n\n### Arguments\n\n \n and of default kind.\n\n\n\n\n\n\n### Return value\nStores the current user name in `LOGIN`. (On systems where POSIX\nfunctions `geteuid` and `getpwuid` are not available, and\nthe `getlogin` function is not implemented either, this will\nreturn a blank string.)\n\n\n\n### Example\n\n ```\n\n\nPROGRAM TEST_GETLOG\n\n  CHARACTER(32) :: login\n\n  CALL GETLOG(login)\n\n  WRITE(*,*) login\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGETUID\n" -} \ No newline at end of file + "keyword": "GETLOG", + "docstr": "`GETLOG` — Get login name\n\n### Description\nGets the username under which the program is running.\n\n\n\n### Syntax\n`CALL GETLOG(C)`\n\n\n### Arguments\n\n \n and of default kind.\n\n\n\n\n\n\n### Return value\nStores the current user name in `LOGIN`. (On systems where POSIX\nfunctions `geteuid` and `getpwuid` are not available, and\nthe `getlogin` function is not implemented either, this will\nreturn a blank string.)\n\n\n\n### Example\n```\n\n\nPROGRAM TEST_GETLOG\n\n  CHARACTER(32) :: login\n\n  CALL GETLOG(login)\n\n  WRITE(*,*) login\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGETUID\n" +} diff --git a/src/docs/GETPID.json b/src/docs/GETPID.json index fbcb33ad..fbd0cee6 100644 --- a/src/docs/GETPID.json +++ b/src/docs/GETPID.json @@ -1,4 +1,4 @@ { - "keyword":"GETPID", - "docstr":"`GETPID` — Process ID function\n\n### Description\nReturns the numerical process identifier of the current process.\n\n\n\n### Syntax\n`RESULT = GETPID()`\n\n\n### Return value\nThe return value of `GETPID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\n\n ```\n\n\nprogram info\n\n  print *, \"The current process ID is \", getpid()\n\n  print *, \"Your numerical user ID is \", getuid()\n\n  print *, \"Your numerical group ID is \", getgid()\n\nend program info\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETGID, GETUID\n" -} \ No newline at end of file + "keyword": "GETPID", + "docstr": "`GETPID` — Process ID function\n\n### Description\nReturns the numerical process identifier of the current process.\n\n\n\n### Syntax\n`RESULT = GETPID()`\n\n\n### Return value\nThe return value of `GETPID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\n```\n\n\nprogram info\n\n  print *, \"The current process ID is \", getpid()\n\n  print *, \"Your numerical user ID is \", getuid()\n\n  print *, \"Your numerical group ID is \", getgid()\n\nend program info\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETGID, GETUID\n" +} diff --git a/src/docs/GETUID.json b/src/docs/GETUID.json index eba73566..bf84db87 100644 --- a/src/docs/GETUID.json +++ b/src/docs/GETUID.json @@ -1,4 +1,4 @@ { - "keyword":"GETUID", - "docstr":"`GETUID` — User ID function\n\n### Description\nReturns the numerical user ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETUID()`\n\n\n### Return value\nThe return value of `GETUID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETLOG\n" -} \ No newline at end of file + "keyword": "GETUID", + "docstr": "`GETUID` — User ID function\n\n### Description\nReturns the numerical user ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETUID()`\n\n\n### Return value\nThe return value of `GETUID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETLOG\n" +} diff --git a/src/docs/GET_COMMAND.json b/src/docs/GET_COMMAND.json index 588d80f3..1edfcda0 100644 --- a/src/docs/GET_COMMAND.json +++ b/src/docs/GET_COMMAND.json @@ -1,4 +1,4 @@ { - "keyword":"GET_COMMAND", - "docstr":"`GET_COMMAND` — Get the entire command line\n\n### Description\nRetrieve the entire command line that was used to invoke the program.\n\n\n\n### Syntax\n`CALL GET_COMMAND([COMMAND, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and\nof default kind. \n\n | `LENGTH` | (Optional) Shall be of type `INTEGER` and of\ndefault kind. \n\n | `STATUS` | (Optional) Shall be of type `INTEGER` and of\ndefault kind.\n\n\n\n\n\n\n### Return value\nIf `COMMAND` is present, stores the entire command line that was used\nto invoke the program in `COMMAND`. If `LENGTH` is present, it is\nassigned the length of the command line. If `STATUS` is present, it\nis assigned 0 upon success of the command, -1 if `COMMAND` is too\nshort to store the command line, or a positive value in case of an error.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_get_command\n\n  CHARACTER(len=255) :: cmd\n\n  CALL get_command(cmd)\n\n  WRITE (*,*) TRIM(cmd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n" -} \ No newline at end of file + "keyword": "GET_COMMAND", + "docstr": "`GET_COMMAND` — Get the entire command line\n\n### Description\nRetrieve the entire command line that was used to invoke the program.\n\n\n\n### Syntax\n`CALL GET_COMMAND([COMMAND, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and\nof default kind. \n\n | `LENGTH` | (Optional) Shall be of type `INTEGER` and of\ndefault kind. \n\n | `STATUS` | (Optional) Shall be of type `INTEGER` and of\ndefault kind.\n\n\n\n\n\n\n### Return value\nIf `COMMAND` is present, stores the entire command line that was used\nto invoke the program in `COMMAND`. If `LENGTH` is present, it is\nassigned the length of the command line. If `STATUS` is present, it\nis assigned 0 upon success of the command, -1 if `COMMAND` is too\nshort to store the command line, or a positive value in case of an error.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command\n\n  CHARACTER(len=255) :: cmd\n\n  CALL get_command(cmd)\n\n  WRITE (*,*) TRIM(cmd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n" +} diff --git a/src/docs/GET_COMMAND_ARGUMENT.json b/src/docs/GET_COMMAND_ARGUMENT.json index 3e146517..3c33c146 100644 --- a/src/docs/GET_COMMAND_ARGUMENT.json +++ b/src/docs/GET_COMMAND_ARGUMENT.json @@ -1,4 +1,4 @@ { - "keyword":"GET_COMMAND_ARGUMENT", - "docstr":"`GET_COMMAND_ARGUMENT` — Get command line arguments\n\n### Description\nRetrieve the `NUMBER`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and of\ndefault kind, `NUMBER` \\geq 0\n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind.\n\n\n\n\n\n\n### Return value\nAfter `GET_COMMAND_ARGUMENT` returns, the `VALUE` argument holds the\n`NUMBER`-th command line argument. If `VALUE` can not hold the argument, it is\ntruncated to fit the length of `VALUE`. If there are less than `NUMBER`\narguments specified at the command line, `VALUE` will be filled with blanks. \nIf `NUMBER` = 0, `VALUE` is set to the name of the program (on\nsystems that support this feature). The `LENGTH` argument contains the\nlength of the `NUMBER`-th command line argument. If the argument retrieval\nfails, `STATUS` is a positive number; if `VALUE` contains a truncated\ncommand line argument, `STATUS` is -1; and otherwise the `STATUS` is\nzero.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_get_command_argument\n\n  INTEGER :: i\n\n  CHARACTER(len=32) :: arg\n\n\n  i = 0\n\n  DO\n\n    CALL get_command_argument(i, arg)\n\n    IF (LEN_TRIM(arg) == 0) EXIT\n\n\n    WRITE (*,*) TRIM(arg)\n\n    i = i+1\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND, COMMAND_ARGUMENT_COUNT\n" -} \ No newline at end of file + "keyword": "GET_COMMAND_ARGUMENT", + "docstr": "`GET_COMMAND_ARGUMENT` — Get command line arguments\n\n### Description\nRetrieve the `NUMBER`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and of\ndefault kind, `NUMBER` \\geq 0\n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind.\n\n\n\n\n\n\n### Return value\nAfter `GET_COMMAND_ARGUMENT` returns, the `VALUE` argument holds the\n`NUMBER`-th command line argument. If `VALUE` can not hold the argument, it is\ntruncated to fit the length of `VALUE`. If there are less than `NUMBER`\narguments specified at the command line, `VALUE` will be filled with blanks. \nIf `NUMBER` = 0, `VALUE` is set to the name of the program (on\nsystems that support this feature). The `LENGTH` argument contains the\nlength of the `NUMBER`-th command line argument. If the argument retrieval\nfails, `STATUS` is a positive number; if `VALUE` contains a truncated\ncommand line argument, `STATUS` is -1; and otherwise the `STATUS` is\nzero.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command_argument\n\n  INTEGER :: i\n\n  CHARACTER(len=32) :: arg\n\n\n  i = 0\n\n  DO\n\n    CALL get_command_argument(i, arg)\n\n    IF (LEN_TRIM(arg) == 0) EXIT\n\n\n    WRITE (*,*) TRIM(arg)\n\n    i = i+1\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND, COMMAND_ARGUMENT_COUNT\n" +} diff --git a/src/docs/GET_ENVIRONMENT_VARIABLE.json b/src/docs/GET_ENVIRONMENT_VARIABLE.json index 63c0e767..412e9993 100644 --- a/src/docs/GET_ENVIRONMENT_VARIABLE.json +++ b/src/docs/GET_ENVIRONMENT_VARIABLE.json @@ -1,4 +1,4 @@ { - "keyword":"GET_ENVIRONMENT_VARIABLE", - "docstr":"`GET_ENVIRONMENT_VARIABLE` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nNote that `GET_ENVIRONMENT_VARIABLE` need not be thread-safe. It\nis the responsibility of the user to ensure that the environment is\nnot being updated concurrently with a call to the\n`GET_ENVIRONMENT_VARIABLE` intrinsic.\n\n\n\n\n### Syntax\n`CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS, TRIM_NAME)`\n\n\n### Arguments\n\n \n\nand of default kind. \n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `TRIM_NAME` | (Optional) Shall be a scalar of type `LOGICAL`and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks. Argument `LENGTH`\ncontains the length needed for storing the environment variable `NAME`\nor zero if it is not present. `STATUS` is -1 if `VALUE` is present\nbut too short for the environment variable; it is 1 if the environment\nvariable does not exist and 2 if the processor does not support environment\nvariables; in all other cases `STATUS` is zero. If `TRIM_NAME` is\npresent with the value `.FALSE.`, the trailing blanks in `NAME`\nare significant; otherwise they are not part of the environment variable\nname.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_getenv\n\n  CHARACTER(len=255) :: homedir\n\n  CALL get_environment_variable(\"HOME\", homedir)\n\n  WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "GET_ENVIRONMENT_VARIABLE", + "docstr": "`GET_ENVIRONMENT_VARIABLE` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nNote that `GET_ENVIRONMENT_VARIABLE` need not be thread-safe. It\nis the responsibility of the user to ensure that the environment is\nnot being updated concurrently with a call to the\n`GET_ENVIRONMENT_VARIABLE` intrinsic.\n\n\n\n\n### Syntax\n`CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS, TRIM_NAME)`\n\n\n### Arguments\n\n \n\nand of default kind. \n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `TRIM_NAME` | (Optional) Shall be a scalar of type `LOGICAL`and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks. Argument `LENGTH`\ncontains the length needed for storing the environment variable `NAME`\nor zero if it is not present. `STATUS` is -1 if `VALUE` is present\nbut too short for the environment variable; it is 1 if the environment\nvariable does not exist and 2 if the processor does not support environment\nvariables; in all other cases `STATUS` is zero. If `TRIM_NAME` is\npresent with the value `.FALSE.`, the trailing blanks in `NAME`\nare significant; otherwise they are not part of the environment variable\nname.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n  CHARACTER(len=255) :: homedir\n\n  CALL get_environment_variable(\"HOME\", homedir)\n\n  WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/GMTIME.json b/src/docs/GMTIME.json index e4171911..8d65d5d4 100644 --- a/src/docs/GMTIME.json +++ b/src/docs/GMTIME.json @@ -1,4 +1,4 @@ { - "keyword":"GMTIME", - "docstr":"`GMTIME` — Convert time to GMT info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the UTC time zone (Universal Coordinated Time, also known in some\ncountries as GMT, Greenwich Mean Time), using `gmtime(3)`.\n\n\n\n### Syntax\n`CALL GMTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n
    \n
  1. Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
  2. Minutes after the hour, range 0–59\n
  3. Hours past midnight, range 0–23\n
  4. Day of month, range 0–31\n
  5. Number of months since January, range 0–12\n
  6. Years since 1900\n
  7. Number of days since Sunday, range 0–6\n
  8. Days since January 1\n
  9. Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, LTIME, TIME, TIME8\n\n " -} \ No newline at end of file + "keyword": "GMTIME", + "docstr": "`GMTIME` — Convert time to GMT info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the UTC time zone (Universal Coordinated Time, also known in some\ncountries as GMT, Greenwich Mean Time), using `gmtime(3)`.\n\n\n\n### Syntax\n`CALL GMTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n
    \n
  1. Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
  2. Minutes after the hour, range 0–59\n
  3. Hours past midnight, range 0–23\n
  4. Day of month, range 0–31\n
  5. Number of months since January, range 0–12\n
  6. Years since 1900\n
  7. Number of days since Sunday, range 0–6\n
  8. Days since January 1\n
  9. Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, LTIME, TIME, TIME8\n\n " +} diff --git a/src/docs/HOSTNM.json b/src/docs/HOSTNM.json index 8e47215c..a23ec7ac 100644 --- a/src/docs/HOSTNM.json +++ b/src/docs/HOSTNM.json @@ -1,4 +1,4 @@ { - "keyword":"HOSTNM", - "docstr":"`HOSTNM` — Get system host name\n\n### Description\nRetrieves the host name of the system on which the program is running.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = HOSTNM(NAME)`
\n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, or a system specific error code otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `NAME` is set to the current hostname if it can\nbe obtained, or to a blank string otherwise.\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" -} \ No newline at end of file + "keyword": "HOSTNM", + "docstr": "`HOSTNM` — Get system host name\n\n### Description\nRetrieves the host name of the system on which the program is running.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = HOSTNM(NAME)`
\n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, or a system specific error code otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `NAME` is set to the current hostname if it can\nbe obtained, or to a blank string otherwise.\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" +} diff --git a/src/docs/HUGE.json b/src/docs/HUGE.json index 9f4e109a..d493261a 100644 --- a/src/docs/HUGE.json +++ b/src/docs/HUGE.json @@ -1,4 +1,4 @@ { - "keyword":"HUGE", - "docstr":"`HUGE` — Largest number of a kind\n\n### Description\n`HUGE(X)` returns the largest number that is not an infinity in\nthe model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = HUGE(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\n\n ```\n\n\nprogram test_huge_tiny\n\n  print *, huge(0), huge(0.0), huge(0.0d0)\n\n  print *, tiny(0.0), tiny(0.0d0)\n\nend program test_huge_tiny\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "HUGE", + "docstr": "`HUGE` — Largest number of a kind\n\n### Description\n`HUGE(X)` returns the largest number that is not an infinity in\nthe model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = HUGE(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\n```\n\n\nprogram test_huge_tiny\n\n  print *, huge(0), huge(0.0), huge(0.0d0)\n\n  print *, tiny(0.0), tiny(0.0d0)\n\nend program test_huge_tiny\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/HYPOT.json b/src/docs/HYPOT.json index d42b298c..e91e2713 100644 --- a/src/docs/HYPOT.json +++ b/src/docs/HYPOT.json @@ -1,4 +1,4 @@ { - "keyword":"HYPOT", - "docstr":"`HYPOT` — Euclidean distance function\n\n### Description\n`HYPOT(X,Y)` is the Euclidean distance function. It is equal to\n\\sqrtX^2 + Y^2, without undue underflow or overflow.\n\n\n\n### Syntax\n`RESULT = HYPOT(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type and kind type parameter shall be the same as\n`X`.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_hypot\n\n  real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n  x = hypot(x,y)\n\nend program test_hypot\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "HYPOT", + "docstr": "`HYPOT` — Euclidean distance function\n\n### Description\n`HYPOT(X,Y)` is the Euclidean distance function. It is equal to\n\\sqrtX^2 + Y^2, without undue underflow or overflow.\n\n\n\n### Syntax\n`RESULT = HYPOT(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type and kind type parameter shall be the same as\n`X`.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_hypot\n\n  real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n  x = hypot(x,y)\n\nend program test_hypot\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/IACHAR.json b/src/docs/IACHAR.json index c1199a1d..89210347 100644 --- a/src/docs/IACHAR.json +++ b/src/docs/IACHAR.json @@ -1,4 +1,4 @@ { - "keyword":"IACHAR", - "docstr":"`IACHAR` — Code in ASCII collating sequence\n\n### Description\n`IACHAR(C)` returns the code for the ASCII character\nin the first character position of `C`.\n\n\n\n### Syntax\n`RESULT = IACHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_iachar\n\n  integer i\n\n  i = iachar(' ')\n\nend program test_iachar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, ICHAR\n\n " -} \ No newline at end of file + "keyword": "IACHAR", + "docstr": "`IACHAR` — Code in ASCII collating sequence\n\n### Description\n`IACHAR(C)` returns the code for the ASCII character\nin the first character position of `C`.\n\n\n\n### Syntax\n`RESULT = IACHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_iachar\n\n  integer i\n\n  i = iachar(' ')\n\nend program test_iachar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, ICHAR\n\n " +} diff --git a/src/docs/IALL.json b/src/docs/IALL.json index e6ef0057..f4fbabb7 100644 --- a/src/docs/IALL.json +++ b/src/docs/IALL.json @@ -1,4 +1,4 @@ { - "keyword":"IALL", - "docstr":"`IALL` — Bitwise AND of array elements\n\n### Description\nReduces with bitwise AND the elements of `ARRAY` along dimension `DIM`\nif the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IALL(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise ALL of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_iall\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 00100000\n\n  PRINT '(b8.8)', IALL(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IPARITY, IAND\n" -} \ No newline at end of file + "keyword": "IALL", + "docstr": "`IALL` — Bitwise AND of array elements\n\n### Description\nReduces with bitwise AND the elements of `ARRAY` along dimension `DIM`\nif the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IALL(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise ALL of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iall\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 00100000\n\n  PRINT '(b8.8)', IALL(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IPARITY, IAND\n" +} diff --git a/src/docs/IAND.json b/src/docs/IAND.json index b8c0a0d7..ec1afa86 100644 --- a/src/docs/IAND.json +++ b/src/docs/IAND.json @@ -1,4 +1,4 @@ { - "keyword":"IAND", - "docstr":"`IAND` — Bitwise logical and\n\n### Description\nBitwise logical `AND`.\n\n\n\n### Syntax\n`RESULT = IAND(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_iand\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n  WRITE (*,*) IAND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IEOR, IBITS, IBSET, IBCLR, NOT\n\n " -} \ No newline at end of file + "keyword": "IAND", + "docstr": "`IAND` — Bitwise logical and\n\n### Description\nBitwise logical `AND`.\n\n\n\n### Syntax\n`RESULT = IAND(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Example\n```\n\n\nPROGRAM test_iand\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n  WRITE (*,*) IAND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IEOR, IBITS, IBSET, IBCLR, NOT\n\n " +} diff --git a/src/docs/IANY.json b/src/docs/IANY.json index 0f0c57e7..85268603 100644 --- a/src/docs/IANY.json +++ b/src/docs/IANY.json @@ -1,4 +1,4 @@ { - "keyword":"IANY", - "docstr":"`IANY` — Bitwise OR of array elements\n\n### Description\nReduces with bitwise OR (inclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IANY(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise OR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_iany\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 01101110\n\n  PRINT '(b8.8)', IANY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIPARITY, IALL, IOR\n" -} \ No newline at end of file + "keyword": "IANY", + "docstr": "`IANY` — Bitwise OR of array elements\n\n### Description\nReduces with bitwise OR (inclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IANY(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise OR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iany\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 01101110\n\n  PRINT '(b8.8)', IANY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIPARITY, IALL, IOR\n" +} diff --git a/src/docs/IARGC.json b/src/docs/IARGC.json index 43fc13c9..e01d7722 100644 --- a/src/docs/IARGC.json +++ b/src/docs/IARGC.json @@ -1,4 +1,4 @@ { - "keyword":"IARGC", - "docstr":"`IARGC` — Get the number of command line arguments\n\n### Description\n`IARGC` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe COMMAND_ARGUMENT_COUNT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`RESULT = IARGC()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe number of command line arguments, type `INTEGER(4)`.\n\n\n\n### Example\nSee GETARG\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGNU Fortran 77 compatibility subroutine: GETARG\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n" -} \ No newline at end of file + "keyword": "IARGC", + "docstr": "`IARGC` — Get the number of command line arguments\n\n### Description\n`IARGC` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe COMMAND_ARGUMENT_COUNT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`RESULT = IARGC()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe number of command line arguments, type `INTEGER(4)`.\n\n\n\n### Example\nSee GETARG\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGNU Fortran 77 compatibility subroutine: GETARG\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n" +} diff --git a/src/docs/IBCLR.json b/src/docs/IBCLR.json index e7e83dd7..6051e573 100644 --- a/src/docs/IBCLR.json +++ b/src/docs/IBCLR.json @@ -1,4 +1,4 @@ { - "keyword":"IBCLR", - "docstr":"`IBCLR` — Clear bit\n\n### Description\n`IBCLR` returns the value of `I` with the bit at position\n`POS` set to zero.\n\n\n\n### Syntax\n`RESULT = IBCLR(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBITS, IBSET, IAND, IOR, IEOR, MVBITS\n\n " -} \ No newline at end of file + "keyword": "IBCLR", + "docstr": "`IBCLR` — Clear bit\n\n### Description\n`IBCLR` returns the value of `I` with the bit at position\n`POS` set to zero.\n\n\n\n### Syntax\n`RESULT = IBCLR(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBITS, IBSET, IAND, IOR, IEOR, MVBITS\n\n " +} diff --git a/src/docs/IBITS.json b/src/docs/IBITS.json index 22e7dd13..6e37fe89 100644 --- a/src/docs/IBITS.json +++ b/src/docs/IBITS.json @@ -1,4 +1,4 @@ { - "keyword":"IBITS", - "docstr":"`IBITS` — Bit extraction\n\n### Description\n`IBITS` extracts a field of length `LEN` from `I`,\nstarting from bit position `POS` and extending left for `LEN`\nbits. The result is right-justified and the remaining bits are\nzeroed. The value of `POS+LEN` must be less than or equal to the\nvalue `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = IBITS(I, POS, LEN)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, IBCLR, IBSET, IAND, IOR, IEOR\n" -} \ No newline at end of file + "keyword": "IBITS", + "docstr": "`IBITS` — Bit extraction\n\n### Description\n`IBITS` extracts a field of length `LEN` from `I`,\nstarting from bit position `POS` and extending left for `LEN`\nbits. The result is right-justified and the remaining bits are\nzeroed. The value of `POS+LEN` must be less than or equal to the\nvalue `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = IBITS(I, POS, LEN)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, IBCLR, IBSET, IAND, IOR, IEOR\n" +} diff --git a/src/docs/IBSET.json b/src/docs/IBSET.json index 2356e601..acc1f91a 100644 --- a/src/docs/IBSET.json +++ b/src/docs/IBSET.json @@ -1,4 +1,4 @@ { - "keyword":"IBSET", - "docstr":"`IBSET` — Set bit\n\n### Description\n`IBSET` returns the value of `I` with the bit at position\n`POS` set to one.\n\n\n\n### Syntax\n`RESULT = IBSET(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBCLR, IBITS, IAND, IOR, IEOR, MVBITS\n\n " -} \ No newline at end of file + "keyword": "IBSET", + "docstr": "`IBSET` — Set bit\n\n### Description\n`IBSET` returns the value of `I` with the bit at position\n`POS` set to one.\n\n\n\n### Syntax\n`RESULT = IBSET(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBCLR, IBITS, IAND, IOR, IEOR, MVBITS\n\n " +} diff --git a/src/docs/ICHAR.json b/src/docs/ICHAR.json index 075786b2..1589d040 100644 --- a/src/docs/ICHAR.json +++ b/src/docs/ICHAR.json @@ -1,4 +1,4 @@ { - "keyword":"ICHAR", - "docstr":"`ICHAR` — Character-to-integer conversion function\n\n### Description\n`ICHAR(C)` returns the code for the character in the first character\nposition of `C` in the system's native character set. \nThe correspondence between characters and their codes is not necessarily\nthe same across different GNU Fortran implementations.\n\n\n\n### Syntax\n`RESULT = ICHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_ichar\n\n  integer i\n\n  i = ichar(' ')\n\nend program test_ichar\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ICHAR(C)` | `CHARACTER C` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Notes\nNo intrinsic exists to convert between a numeric value and a formatted\ncharacter string representation – for instance, given the\n`CHARACTER` value `'154'`, obtaining an `INTEGER` or\n`REAL` value with the value 154, or vice versa. Instead, this\nfunctionality is provided by internal-file I/O, as in the following\nexample:\n
          program read_val\n            integer value\n            character(len=10) string, string2\n            string = '154'\n          \n            ! Convert a string to a numeric value\n            read (string,'(I10)') value\n            print *, value\n          \n            ! Convert a value to a formatted string\n            write (string2,'(I10)') value\n            print *, string2\n          end program read_val\n
\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, IACHAR\n\n " -} \ No newline at end of file + "keyword": "ICHAR", + "docstr": "`ICHAR` — Character-to-integer conversion function\n\n### Description\n`ICHAR(C)` returns the code for the character in the first character\nposition of `C` in the system's native character set. \nThe correspondence between characters and their codes is not necessarily\nthe same across different GNU Fortran implementations.\n\n\n\n### Syntax\n`RESULT = ICHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_ichar\n\n  integer i\n\n  i = ichar(' ')\n\nend program test_ichar\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ICHAR(C)` | `CHARACTER C` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Notes\nNo intrinsic exists to convert between a numeric value and a formatted\ncharacter string representation – for instance, given the\n`CHARACTER` value `'154'`, obtaining an `INTEGER` or\n`REAL` value with the value 154, or vice versa. Instead, this\nfunctionality is provided by internal-file I/O, as in the following\nexample:\n
          program read_val\n            integer value\n            character(len=10) string, string2\n            string = '154'\n          \n            ! Convert a string to a numeric value\n            read (string,'(I10)') value\n            print *, value\n          \n            ! Convert a value to a formatted string\n            write (string2,'(I10)') value\n            print *, string2\n          end program read_val\n
\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, IACHAR\n\n " +} diff --git a/src/docs/IDATE.json b/src/docs/IDATE.json index 389ae849..34822828 100644 --- a/src/docs/IDATE.json +++ b/src/docs/IDATE.json @@ -1,4 +1,4 @@ { - "keyword":"IDATE", - "docstr":"`IDATE` — Get current local time subroutine (day/month/year)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The day (in the range 1-31), month (in the range 1-12),\nand year appear in elements 1, 2, and 3 of `VALUES`, respectively. \nThe year has four significant digits.\n\n\n\n### Syntax\n`CALL IDATE(VALUES)`\n\n\n### Arguments\n\n \n and\nthe kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n\n ```\n\n\nprogram test_idate\n\n  integer, dimension(3) :: tarray\n\n  call idate(tarray)\n\n  print *, tarray(1)\n\n  print *, tarray(2)\n\n  print *, tarray(3)\n\nend program test_idate\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "IDATE", + "docstr": "`IDATE` — Get current local time subroutine (day/month/year)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The day (in the range 1-31), month (in the range 1-12),\nand year appear in elements 1, 2, and 3 of `VALUES`, respectively. \nThe year has four significant digits.\n\n\n\n### Syntax\n`CALL IDATE(VALUES)`\n\n\n### Arguments\n\n \n and\nthe kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_idate\n\n  integer, dimension(3) :: tarray\n\n  call idate(tarray)\n\n  print *, tarray(1)\n\n  print *, tarray(2)\n\n  print *, tarray(3)\n\nend program test_idate\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/IEOR.json b/src/docs/IEOR.json index 58de3c6a..020fa2da 100644 --- a/src/docs/IEOR.json +++ b/src/docs/IEOR.json @@ -1,4 +1,4 @@ { - "keyword":"IEOR", - "docstr":"`IEOR` — Bitwise logical exclusive or\n\n### Description\n`IEOR` returns the bitwise Boolean exclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IEOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IAND, IBITS, IBSET, IBCLR, NOT\n" -} \ No newline at end of file + "keyword": "IEOR", + "docstr": "`IEOR` — Bitwise logical exclusive or\n\n### Description\n`IEOR` returns the bitwise Boolean exclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IEOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IAND, IBITS, IBSET, IBCLR, NOT\n" +} diff --git a/src/docs/IERRNO.json b/src/docs/IERRNO.json index d8de4a45..e908e581 100644 --- a/src/docs/IERRNO.json +++ b/src/docs/IERRNO.json @@ -1,4 +1,4 @@ { - "keyword":"IERRNO", - "docstr":"`IERRNO` — Get the last system error number\n\n### Description\nReturns the last system error number, as given by the C `errno`variable.\n\n\n\n### Syntax\n`RESULT = IERRNO()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nPERROR\n" -} \ No newline at end of file + "keyword": "IERRNO", + "docstr": "`IERRNO` — Get the last system error number\n\n### Description\nReturns the last system error number, as given by the C `errno`variable.\n\n\n\n### Syntax\n`RESULT = IERRNO()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nPERROR\n" +} diff --git a/src/docs/IMAGE_INDEX.json b/src/docs/IMAGE_INDEX.json index f93e5731..3985dfe8 100644 --- a/src/docs/IMAGE_INDEX.json +++ b/src/docs/IMAGE_INDEX.json @@ -1,4 +1,4 @@ { - "keyword":"IMAGE_INDEX", - "docstr":"`IMAGE_INDEX` — Function that converts a cosubscript to an image index\n\n### Description\nReturns the image index belonging to a cosubscript.\n\n\n\n### Syntax\n`RESULT = IMAGE_INDEX(COARRAY, SUB)`\n\n\n### Return value\nScalar default integer with the value of the image index which corresponds\nto the cosubscripts. For invalid cosubscripts the result is zero.\n\n\n\n### Example\n\n ```\n\n\nINTEGER :: array[2,-1:4,8,*]\n\n! Writes 28 (or 0 if there are fewer than 28 images)\n\nWRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function.\n\n\n\n### See also\nTHIS_IMAGE, NUM_IMAGES\n" -} \ No newline at end of file + "keyword": "IMAGE_INDEX", + "docstr": "`IMAGE_INDEX` — Function that converts a cosubscript to an image index\n\n### Description\nReturns the image index belonging to a cosubscript.\n\n\n\n### Syntax\n`RESULT = IMAGE_INDEX(COARRAY, SUB)`\n\n\n### Return value\nScalar default integer with the value of the image index which corresponds\nto the cosubscripts. For invalid cosubscripts the result is zero.\n\n\n\n### Example\n```\n\n\nINTEGER :: array[2,-1:4,8,*]\n\n! Writes 28 (or 0 if there are fewer than 28 images)\n\nWRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function.\n\n\n\n### See also\nTHIS_IMAGE, NUM_IMAGES\n" +} diff --git a/src/docs/INDEX.json b/src/docs/INDEX.json index 4ebd8546..b386874a 100644 --- a/src/docs/INDEX.json +++ b/src/docs/INDEX.json @@ -1,4 +1,4 @@ { - "keyword":"INDEX", - "docstr":"`INDEX` — Position of a substring within a string\n\n### Description\nReturns the position of the start of the first occurrence of string\n`SUBSTRING` as a substring in `STRING`, counting from one. If\n`SUBSTRING` is not present in `STRING`, zero is returned. If\nthe `BACK` argument is present and true, the return value is the\nstart of the last occurrence rather than the first.\n\n\n\n### Syntax\n`RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])`\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)`
\n | `SUBSTRING` | Shall be a scalar `CHARACTER`, with\n`INTENT(IN)`
\n | `BACK` | (Optional) Shall be a scalar `LOGICAL`, with\n`INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INDEX(STRING, SUBSTRING)` | `CHARACTER` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, VERIFY\n" -} \ No newline at end of file + "keyword": "INDEX", + "docstr": "`INDEX` — Position of a substring within a string\n\n### Description\nReturns the position of the start of the first occurrence of string\n`SUBSTRING` as a substring in `STRING`, counting from one. If\n`SUBSTRING` is not present in `STRING`, zero is returned. If\nthe `BACK` argument is present and true, the return value is the\nstart of the last occurrence rather than the first.\n\n\n\n### Syntax\n`RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])`\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)`
\n | `SUBSTRING` | Shall be a scalar `CHARACTER`, with\n`INTENT(IN)`
\n | `BACK` | (Optional) Shall be a scalar `LOGICAL`, with\n`INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INDEX(STRING, SUBSTRING)` | `CHARACTER` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, VERIFY\n" +} diff --git a/src/docs/INT.json b/src/docs/INT.json index 91c36ea0..34562eb4 100644 --- a/src/docs/INT.json +++ b/src/docs/INT.json @@ -1,4 +1,4 @@ { - "keyword":"INT", - "docstr":"`INT` — Convert to integer type\n\n### Description\nConvert to integer type\n\n\n\n### Syntax\n`RESULT = INT(A [, KIND))`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `INTEGER` variable or array under\nthe following rules:\n\n
\n**(A)** If `A` is of type `INTEGER`, `INT(A) = A`\n**(B)** If `A` is of type `REAL` and |A| < 1, `INT(A)`equals `0`. If |A| \\geq 1, then `INT(A)` is the integer\nwhose magnitude is the largest integer that does not exceed the magnitude\nof `A` and whose sign is the same as the sign of `A`. \n\n**(C)** If `A` is of type `COMPLEX`, rule B is applied to the real part of `A`. \n\n
\n\n\n\n### Example\n\n ```\n\n\nprogram test_int\n\n  integer :: i = 42\n\n  complex :: z = (-3.7, 1.0)\n\n  print *, int(i)\n\n  print *, int(z), int(z,8)\n\nend program\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INT(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IFIX(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IDINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "INT", + "docstr": "`INT` — Convert to integer type\n\n### Description\nConvert to integer type\n\n\n\n### Syntax\n`RESULT = INT(A [, KIND))`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `INTEGER` variable or array under\nthe following rules:\n\n
\n**(A)** If `A` is of type `INTEGER`, `INT(A) = A`\n**(B)** If `A` is of type `REAL` and |A| < 1, `INT(A)`equals `0`. If |A| \\geq 1, then `INT(A)` is the integer\nwhose magnitude is the largest integer that does not exceed the magnitude\nof `A` and whose sign is the same as the sign of `A`. \n\n**(C)** If `A` is of type `COMPLEX`, rule B is applied to the real part of `A`. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_int\n\n  integer :: i = 42\n\n  complex :: z = (-3.7, 1.0)\n\n  print *, int(i)\n\n  print *, int(z), int(z,8)\n\nend program\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INT(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IFIX(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IDINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/INT2.json b/src/docs/INT2.json index f2948b4d..c9860103 100644 --- a/src/docs/INT2.json +++ b/src/docs/INT2.json @@ -1,4 +1,4 @@ { - "keyword":"INT2", - "docstr":"`INT2` — Convert to 16-bit integer type\n\n### Description\nConvert to a `KIND=2` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=2`, and is only included for backwards compatibility.\n\n \nThe `SHORT` intrinsic is equivalent to `INT2`.\n\n\n\n\n### Syntax\n`RESULT = INT2(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(2)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT8, LONG\n" -} \ No newline at end of file + "keyword": "INT2", + "docstr": "`INT2` — Convert to 16-bit integer type\n\n### Description\nConvert to a `KIND=2` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=2`, and is only included for backwards compatibility.\n\n \nThe `SHORT` intrinsic is equivalent to `INT2`.\n\n\n\n\n### Syntax\n`RESULT = INT2(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(2)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT8, LONG\n" +} diff --git a/src/docs/INT8.json b/src/docs/INT8.json index d3d105fd..d21e500a 100644 --- a/src/docs/INT8.json +++ b/src/docs/INT8.json @@ -1,4 +1,4 @@ { - "keyword":"INT8", - "docstr":"`INT8` — Convert to 64-bit integer type\n\n### Description\nConvert to a `KIND=8` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=8`, and is only included for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = INT8(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(8)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, LONG\n" -} \ No newline at end of file + "keyword": "INT8", + "docstr": "`INT8` — Convert to 64-bit integer type\n\n### Description\nConvert to a `KIND=8` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=8`, and is only included for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = INT8(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(8)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, LONG\n" +} diff --git a/src/docs/IOR.json b/src/docs/IOR.json index 7decf4ab..aaf59c82 100644 --- a/src/docs/IOR.json +++ b/src/docs/IOR.json @@ -1,4 +1,4 @@ { - "keyword":"IOR", - "docstr":"`IOR` — Bitwise logical or\n\n### Description\n`IOR` returns the bitwise Boolean inclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIEOR, IAND, IBITS, IBSET, IBCLR, NOT\n" -} \ No newline at end of file + "keyword": "IOR", + "docstr": "`IOR` — Bitwise logical or\n\n### Description\n`IOR` returns the bitwise Boolean inclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIEOR, IAND, IBITS, IBSET, IBCLR, NOT\n" +} diff --git a/src/docs/IPARITY.json b/src/docs/IPARITY.json index 64696cc6..7b394dc9 100644 --- a/src/docs/IPARITY.json +++ b/src/docs/IPARITY.json @@ -1,4 +1,4 @@ { - "keyword":"IPARITY", - "docstr":"`IPARITY` — Bitwise XOR of array elements\n\n### Description\nReduces with bitwise XOR (exclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IPARITY(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise XOR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_iparity\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 01001110\n\n  PRINT '(b8.8)', IPARITY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IALL, IEOR, PARITY\n" -} \ No newline at end of file + "keyword": "IPARITY", + "docstr": "`IPARITY` — Bitwise XOR of array elements\n\n### Description\nReduces with bitwise XOR (exclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IPARITY(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise XOR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iparity\n\n  INTEGER(1) :: a(2)\n\n\n  a(1) = b'00100100'\n\n  a(2) = b'01101010'\n\n\n  ! prints 01001110\n\n  PRINT '(b8.8)', IPARITY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IALL, IEOR, PARITY\n" +} diff --git a/src/docs/IRAND.json b/src/docs/IRAND.json index 6a86af51..0b6dd7a3 100644 --- a/src/docs/IRAND.json +++ b/src/docs/IRAND.json @@ -1,4 +1,4 @@ { - "keyword":"IRAND", - "docstr":"`IRAND` — Integer pseudo-random number\n\n### Description\n`IRAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and a system-dependent limit (which is in most\ncases 2147483647). If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = IRAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Example\n\n ```\n\n\nprogram test_irand\n\n  integer,parameter :: seed = 86456\n\n\n  call srand(seed)\n\n  print *, irand(), irand(), irand(), irand()\n\n  print *, irand(seed), irand(), irand(), irand()\n\nend program test_irand\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" -} \ No newline at end of file + "keyword": "IRAND", + "docstr": "`IRAND` — Integer pseudo-random number\n\n### Description\n`IRAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and a system-dependent limit (which is in most\ncases 2147483647). If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = IRAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Example\n```\n\n\nprogram test_irand\n\n  integer,parameter :: seed = 86456\n\n\n  call srand(seed)\n\n  print *, irand(), irand(), irand(), irand()\n\n  print *, irand(seed), irand(), irand(), irand()\n\nend program test_irand\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" +} diff --git a/src/docs/ISATTY.json b/src/docs/ISATTY.json index d71e8c3b..e8d91ec7 100644 --- a/src/docs/ISATTY.json +++ b/src/docs/ISATTY.json @@ -1,4 +1,4 @@ { - "keyword":"ISATTY", - "docstr":"`ISATTY` — Whether a unit is a terminal device.\n\n### Description\nDetermine whether a unit is connected to a terminal device.\n\n\n\n### Syntax\n`RESULT = ISATTY(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if the `UNIT` is connected to a terminal\ndevice, `.FALSE.` otherwise.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_isatty\n\n  INTEGER(kind=1) :: unit\n\n  DO unit = 1, 10\n\n    write(*,*) isatty(unit=unit)\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nTTYNAM\n" -} \ No newline at end of file + "keyword": "ISATTY", + "docstr": "`ISATTY` — Whether a unit is a terminal device.\n\n### Description\nDetermine whether a unit is connected to a terminal device.\n\n\n\n### Syntax\n`RESULT = ISATTY(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if the `UNIT` is connected to a terminal\ndevice, `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_isatty\n\n  INTEGER(kind=1) :: unit\n\n  DO unit = 1, 10\n\n    write(*,*) isatty(unit=unit)\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nTTYNAM\n" +} diff --git a/src/docs/ISHFT.json b/src/docs/ISHFT.json index b38f3742..d7561c08 100644 --- a/src/docs/ISHFT.json +++ b/src/docs/ISHFT.json @@ -1,4 +1,4 @@ { - "keyword":"ISHFT", - "docstr":"`ISHFT` — Shift bits\n\n### Description\n`ISHFT` returns a value corresponding to `I` with all of the\nbits shifted `SHIFT` places. A value of `SHIFT` greater than\nzero corresponds to a left shift, a value of zero corresponds to no\nshift, and a value less than zero corresponds to a right shift. If the\nabsolute value of `SHIFT` is greater than `BIT_SIZE(I)`, the\nvalue is undefined. Bits shifted out from the left end or right end are\nlost; zeros are shifted in from the opposite end.\n\n\n\n### Syntax\n`RESULT = ISHFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFTC\n" -} \ No newline at end of file + "keyword": "ISHFT", + "docstr": "`ISHFT` — Shift bits\n\n### Description\n`ISHFT` returns a value corresponding to `I` with all of the\nbits shifted `SHIFT` places. A value of `SHIFT` greater than\nzero corresponds to a left shift, a value of zero corresponds to no\nshift, and a value less than zero corresponds to a right shift. If the\nabsolute value of `SHIFT` is greater than `BIT_SIZE(I)`, the\nvalue is undefined. Bits shifted out from the left end or right end are\nlost; zeros are shifted in from the opposite end.\n\n\n\n### Syntax\n`RESULT = ISHFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFTC\n" +} diff --git a/src/docs/ISHFTC.json b/src/docs/ISHFTC.json index cec7e9c2..ef42a04e 100644 --- a/src/docs/ISHFTC.json +++ b/src/docs/ISHFTC.json @@ -1,4 +1,4 @@ { - "keyword":"ISHFTC", - "docstr":"`ISHFTC` — Shift bits circularly\n\n### Description\n`ISHFTC` returns a value corresponding to `I` with the\nrightmost `SIZE` bits shifted circularly `SHIFT` places; that\nis, bits shifted out one end are shifted into the opposite end. A value\nof `SHIFT` greater than zero corresponds to a left shift, a value of\nzero corresponds to no shift, and a value less than zero corresponds to\na right shift. The absolute value of `SHIFT` must be less than\n`SIZE`. If the `SIZE` argument is omitted, it is taken to be\nequivalent to `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = ISHFTC(I, SHIFT [, SIZE])`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `SIZE` | (Optional) The type shall be `INTEGER`;\nthe value must be greater than zero and less than or equal to\n`BIT_SIZE(I)`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT\n" -} \ No newline at end of file + "keyword": "ISHFTC", + "docstr": "`ISHFTC` — Shift bits circularly\n\n### Description\n`ISHFTC` returns a value corresponding to `I` with the\nrightmost `SIZE` bits shifted circularly `SHIFT` places; that\nis, bits shifted out one end are shifted into the opposite end. A value\nof `SHIFT` greater than zero corresponds to a left shift, a value of\nzero corresponds to no shift, and a value less than zero corresponds to\na right shift. The absolute value of `SHIFT` must be less than\n`SIZE`. If the `SIZE` argument is omitted, it is taken to be\nequivalent to `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = ISHFTC(I, SHIFT [, SIZE])`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `SIZE` | (Optional) The type shall be `INTEGER`;\nthe value must be greater than zero and less than or equal to\n`BIT_SIZE(I)`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT\n" +} diff --git a/src/docs/ISNAN.json b/src/docs/ISNAN.json index b6c6ac0a..b7bcd47a 100644 --- a/src/docs/ISNAN.json +++ b/src/docs/ISNAN.json @@ -1,4 +1,4 @@ { - "keyword":"ISNAN", - "docstr":"`ISNAN` — Test for a NaN\n\n### Description\n`ISNAN` tests whether a floating-point value is an IEEE\nNot-a-Number (NaN). \n\n\n### Syntax\n`ISNAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n\n### Return value\nReturns a default-kind `LOGICAL`. The returned value is `TRUE`if `X` is a NaN and `FALSE` otherwise.\n\n\n\n### Example\n\n ```\n\n\nprogram test_nan\n\n  implicit none\n\n  real :: x\n\n  x = -1.0\n\n  x = sqrt(x)\n\n  if (isnan(x)) stop '\"x\" is a NaN'\n\nend program test_nan\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "ISNAN", + "docstr": "`ISNAN` — Test for a NaN\n\n### Description\n`ISNAN` tests whether a floating-point value is an IEEE\nNot-a-Number (NaN). \n\n\n### Syntax\n`ISNAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n\n### Return value\nReturns a default-kind `LOGICAL`. The returned value is `TRUE`if `X` is a NaN and `FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_nan\n\n  implicit none\n\n  real :: x\n\n  x = -1.0\n\n  x = sqrt(x)\n\n  if (isnan(x)) stop '\"x\" is a NaN'\n\nend program test_nan\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/IS_CONTIGUOUS.json b/src/docs/IS_CONTIGUOUS.json index 4ee2ebd5..25a165ac 100644 --- a/src/docs/IS_CONTIGUOUS.json +++ b/src/docs/IS_CONTIGUOUS.json @@ -1,4 +1,4 @@ { - "keyword":"IS_CONTIGUOUS", - "docstr":"`IS_CONTIGUOUS` — Test whether an array is contiguous\n\n### Description\nIS_CONTIGUOUS tests whether an array is contiguous.\n### Standard\nFortran 2008 and later.\n### Class\nInquiry function\n### Syntax\nRESULT = IS_CONTIGUOUS(ARRAY)\n### Arguments\n- ARRAY: Shall be an array of any type.\n### Return value\nReturns a LOGICAL of the default kind, which .TRUE. if ARRAY is contiguous and false otherwise.\n" -} \ No newline at end of file + "keyword": "IS_CONTIGUOUS", + "docstr": "`IS_CONTIGUOUS` — Test whether an array is contiguous\n\n### Description\nIS_CONTIGUOUS tests whether an array is contiguous.\n### Standard\nFortran 2008 and later.\n### Class\nInquiry function\n### Syntax\nRESULT = IS_CONTIGUOUS(ARRAY)\n### Arguments\n- ARRAY: Shall be an array of any type.\n### Return value\nReturns a LOGICAL of the default kind, which .TRUE. if ARRAY is contiguous and false otherwise.\n" +} diff --git a/src/docs/IS_IOSTAT_END.json b/src/docs/IS_IOSTAT_END.json index 457b97b6..59e169c8 100644 --- a/src/docs/IS_IOSTAT_END.json +++ b/src/docs/IS_IOSTAT_END.json @@ -1,4 +1,4 @@ { - "keyword":"IS_IOSTAT_END", - "docstr":"`IS_IOSTAT_END` — Test for end-of-file value\n\n### Description\n`IS_IOSTAT_END` tests whether an variable has the value of the I/O\nstatus “end of file”. The function is equivalent to comparing the variable\nwith the `IOSTAT_END` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_END(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM iostat\n\n  IMPLICIT NONE\n\n  INTEGER :: stat, i\n\n  OPEN(88, FILE='test.dat')\n\n  READ(88, *, IOSTAT=stat) i\n\n  IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "IS_IOSTAT_END", + "docstr": "`IS_IOSTAT_END` — Test for end-of-file value\n\n### Description\n`IS_IOSTAT_END` tests whether an variable has the value of the I/O\nstatus “end of file”. The function is equivalent to comparing the variable\nwith the `IOSTAT_END` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_END(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n  IMPLICIT NONE\n\n  INTEGER :: stat, i\n\n  OPEN(88, FILE='test.dat')\n\n  READ(88, *, IOSTAT=stat) i\n\n  IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/IS_IOSTAT_EOR.json b/src/docs/IS_IOSTAT_EOR.json index 0497f8ac..138b57af 100644 --- a/src/docs/IS_IOSTAT_EOR.json +++ b/src/docs/IS_IOSTAT_EOR.json @@ -1,4 +1,4 @@ { - "keyword":"IS_IOSTAT_EOR", - "docstr":"`IS_IOSTAT_EOR` — Test for end-of-record value\n\n### Description\n`IS_IOSTAT_EOR` tests whether an variable has the value of the I/O\nstatus “end of record”. The function is equivalent to comparing the\nvariable with the `IOSTAT_EOR` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_EOR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM iostat\n\n  IMPLICIT NONE\n\n  INTEGER :: stat, i(50)\n\n  OPEN(88, FILE='test.dat', FORM='UNFORMATTED')\n\n  READ(88, IOSTAT=stat) i\n\n  IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "IS_IOSTAT_EOR", + "docstr": "`IS_IOSTAT_EOR` — Test for end-of-record value\n\n### Description\n`IS_IOSTAT_EOR` tests whether an variable has the value of the I/O\nstatus “end of record”. The function is equivalent to comparing the\nvariable with the `IOSTAT_EOR` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_EOR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n  IMPLICIT NONE\n\n  INTEGER :: stat, i(50)\n\n  OPEN(88, FILE='test.dat', FORM='UNFORMATTED')\n\n  READ(88, IOSTAT=stat) i\n\n  IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/ITIME.json b/src/docs/ITIME.json index 000cc96f..add060aa 100644 --- a/src/docs/ITIME.json +++ b/src/docs/ITIME.json @@ -1,4 +1,4 @@ { - "keyword":"ITIME", - "docstr":"`ITIME` — Get current local time subroutine (hour/minutes/seconds)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The hour (in the range 1-24), minute (in the range 1-60),\nand seconds (in the range 1-60) appear in elements 1, 2, and 3 of `VALUES`,\nrespectively.\n\n\n\n### Syntax\n`CALL ITIME(VALUES)`\n\n\n### Arguments\n\n \n\nand the kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n\n ```\n\n\nprogram test_itime\n\n  integer, dimension(3) :: tarray\n\n  call itime(tarray)\n\n  print *, tarray(1)\n\n  print *, tarray(2)\n\n  print *, tarray(3)\n\nend program test_itime\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "ITIME", + "docstr": "`ITIME` — Get current local time subroutine (hour/minutes/seconds)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The hour (in the range 1-24), minute (in the range 1-60),\nand seconds (in the range 1-60) appear in elements 1, 2, and 3 of `VALUES`,\nrespectively.\n\n\n\n### Syntax\n`CALL ITIME(VALUES)`\n\n\n### Arguments\n\n \n\nand the kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_itime\n\n  integer, dimension(3) :: tarray\n\n  call itime(tarray)\n\n  print *, tarray(1)\n\n  print *, tarray(2)\n\n  print *, tarray(3)\n\nend program test_itime\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/KILL.json b/src/docs/KILL.json index 6c897843..03b465e0 100644 --- a/src/docs/KILL.json +++ b/src/docs/KILL.json @@ -1,4 +1,4 @@ { - "keyword":"KILL", - "docstr":"`KILL` — Send a signal to a process\n\n### Description\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = KILL(C, VALUE)`
\n\n\n\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)`
\n | `VALUE` | Shall be a scalar `INTEGER`, with\n`INTENT(IN)`
\n | `STATUS` | (Optional) status flag of type `INTEGER(4)` or\n`INTEGER(8)`. Returns 0 on success, or a system-specific error code\notherwise.\n\n\n\n\n\n\n### Standard\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nABORT, EXIT\n" -} \ No newline at end of file + "keyword": "KILL", + "docstr": "`KILL` — Send a signal to a process\n\n### Description\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = KILL(C, VALUE)`
\n\n\n\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)`
\n | `VALUE` | Shall be a scalar `INTEGER`, with\n`INTENT(IN)`
\n | `STATUS` | (Optional) status flag of type `INTEGER(4)` or\n`INTEGER(8)`. Returns 0 on success, or a system-specific error code\notherwise.\n\n\n\n\n\n\n### Standard\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nABORT, EXIT\n" +} diff --git a/src/docs/KIND.json b/src/docs/KIND.json index 23298543..405a5166 100644 --- a/src/docs/KIND.json +++ b/src/docs/KIND.json @@ -1,4 +1,4 @@ { - "keyword":"KIND", - "docstr":"`KIND` — Kind of an entity\n\n### Description\n`KIND(X)` returns the kind value of the entity `X`.\n\n\n\n### Syntax\n`K = KIND(X)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX` or `CHARACTER`.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_kind\n\n  integer,parameter :: kc = kind(' ')\n\n  integer,parameter :: kl = kind(.true.)\n\n\n  print *, \"The default character kind is \", kc\n\n  print *, \"The default logical kind is \", kl\n\nend program test_kind\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "KIND", + "docstr": "`KIND` — Kind of an entity\n\n### Description\n`KIND(X)` returns the kind value of the entity `X`.\n\n\n\n### Syntax\n`K = KIND(X)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX` or `CHARACTER`.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_kind\n\n  integer,parameter :: kc = kind(' ')\n\n  integer,parameter :: kl = kind(.true.)\n\n\n  print *, \"The default character kind is \", kc\n\n  print *, \"The default logical kind is \", kl\n\nend program test_kind\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/LBOUND.json b/src/docs/LBOUND.json index 1fe6be00..18b81cb5 100644 --- a/src/docs/LBOUND.json +++ b/src/docs/LBOUND.json @@ -1,4 +1,4 @@ { - "keyword":"LBOUND", - "docstr":"`LBOUND` — Lower dimension bounds of an array\n\n### Description\nReturns the lower bounds of an array, or a single lower bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = LBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the lower bound is taken to be 1.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUBOUND, LCOBOUND\n" -} \ No newline at end of file + "keyword": "LBOUND", + "docstr": "`LBOUND` — Lower dimension bounds of an array\n\n### Description\nReturns the lower bounds of an array, or a single lower bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = LBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the lower bound is taken to be 1.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUBOUND, LCOBOUND\n" +} diff --git a/src/docs/LCOBOUND.json b/src/docs/LCOBOUND.json index a1d18c87..4ac8b183 100644 --- a/src/docs/LCOBOUND.json +++ b/src/docs/LCOBOUND.json @@ -1,4 +1,4 @@ { - "keyword":"LCOBOUND", - "docstr":"`LCOBOUND` — Lower codimension bounds of an array\n\n### Description\nReturns the lower bounds of a coarray, or a single lower cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUCOBOUND, LBOUND\n" -} \ No newline at end of file + "keyword": "LCOBOUND", + "docstr": "`LCOBOUND` — Lower codimension bounds of an array\n\n### Description\nReturns the lower bounds of a coarray, or a single lower cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUCOBOUND, LBOUND\n" +} diff --git a/src/docs/LEADZ.json b/src/docs/LEADZ.json index a37ea31e..720e2799 100644 --- a/src/docs/LEADZ.json +++ b/src/docs/LEADZ.json @@ -1,4 +1,4 @@ { - "keyword":"LEADZ", - "docstr":"`LEADZ` — Number of leading zero bits of an integer\n\n### Description\n`LEADZ` returns the number of leading zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = LEADZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_leadz\n\n  WRITE (*,*) BIT_SIZE(1) ! prints 32\n\n  WRITE (*,*) LEADZ(1) ! prints 31\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, TRAILZ, POPCNT, POPPAR\n" -} \ No newline at end of file + "keyword": "LEADZ", + "docstr": "`LEADZ` — Number of leading zero bits of an integer\n\n### Description\n`LEADZ` returns the number of leading zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = LEADZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_leadz\n\n  WRITE (*,*) BIT_SIZE(1) ! prints 32\n\n  WRITE (*,*) LEADZ(1) ! prints 31\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, TRAILZ, POPCNT, POPPAR\n" +} diff --git a/src/docs/LEN.json b/src/docs/LEN.json index 32de964d..45688fb8 100644 --- a/src/docs/LEN.json +++ b/src/docs/LEN.json @@ -1,4 +1,4 @@ { - "keyword":"LEN", - "docstr":"`LEN` — Length of a character entity\n\n### Description\nReturns the length of a character string. If `STRING` is an array,\nthe length of an element of `STRING` is returned. Note that\n`STRING` need not be defined when this intrinsic is invoked, since\nonly the length, not the content, of `STRING` is needed.\n\n\n\n### Syntax\n`L = LEN(STRING [, KIND])`\n\n\n### Arguments\n\n \n | `STRING` | Shall be a scalar or array of type\n`CHARACTER`, with `INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LEN(STRING)` | `CHARACTER` | `INTEGER` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLEN_TRIM, ADJUSTL, ADJUSTR\n" -} \ No newline at end of file + "keyword": "LEN", + "docstr": "`LEN` — Length of a character entity\n\n### Description\nReturns the length of a character string. If `STRING` is an array,\nthe length of an element of `STRING` is returned. Note that\n`STRING` need not be defined when this intrinsic is invoked, since\nonly the length, not the content, of `STRING` is needed.\n\n\n\n### Syntax\n`L = LEN(STRING [, KIND])`\n\n\n### Arguments\n\n \n | `STRING` | Shall be a scalar or array of type\n`CHARACTER`, with `INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LEN(STRING)` | `CHARACTER` | `INTEGER` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLEN_TRIM, ADJUSTL, ADJUSTR\n" +} diff --git a/src/docs/LEN_TRIM.json b/src/docs/LEN_TRIM.json index 5c91b0f4..0ba076ea 100644 --- a/src/docs/LEN_TRIM.json +++ b/src/docs/LEN_TRIM.json @@ -1,4 +1,4 @@ { - "keyword":"LEN_TRIM", - "docstr":"`LEN_TRIM` — Length of a character entity without trailing blank characters\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks.\n\n\n\n### Syntax\n`RESULT = LEN_TRIM(STRING [, KIND])`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLEN, ADJUSTL, ADJUSTR\n" -} \ No newline at end of file + "keyword": "LEN_TRIM", + "docstr": "`LEN_TRIM` — Length of a character entity without trailing blank characters\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks.\n\n\n\n### Syntax\n`RESULT = LEN_TRIM(STRING [, KIND])`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)`
\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLEN, ADJUSTL, ADJUSTR\n" +} diff --git a/src/docs/LGE.json b/src/docs/LGE.json index 151476cc..8ee1bb38 100644 --- a/src/docs/LGE.json +++ b/src/docs/LGE.json @@ -1,4 +1,4 @@ { - "keyword":"LGE", - "docstr":"`LGE` — Lexical greater than or equal\n\n### Description\nDetermines whether one string is lexically greater than or equal to\nanother string, where the two strings are interpreted as containing\nASCII character codes. If the String A and String B are not the same\nlength, the shorter is compared as if spaces were appended to it to form\na value that has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A >= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGT, LLE, LLT\n" -} \ No newline at end of file + "keyword": "LGE", + "docstr": "`LGE` — Lexical greater than or equal\n\n### Description\nDetermines whether one string is lexically greater than or equal to\nanother string, where the two strings are interpreted as containing\nASCII character codes. If the String A and String B are not the same\nlength, the shorter is compared as if spaces were appended to it to form\na value that has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A >= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGT, LLE, LLT\n" +} diff --git a/src/docs/LGT.json b/src/docs/LGT.json index e1494c14..354dc05b 100644 --- a/src/docs/LGT.json +++ b/src/docs/LGT.json @@ -1,4 +1,4 @@ { - "keyword":"LGT", - "docstr":"`LGT` — Lexical greater than\n\n### Description\nDetermines whether one string is lexically greater than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A > STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LLE, LLT\n" -} \ No newline at end of file + "keyword": "LGT", + "docstr": "`LGT` — Lexical greater than\n\n### Description\nDetermines whether one string is lexically greater than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A > STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LLE, LLT\n" +} diff --git a/src/docs/LINK.json b/src/docs/LINK.json index b9b7370e..a6747629 100644 --- a/src/docs/LINK.json +++ b/src/docs/LINK.json @@ -1,4 +1,4 @@ { - "keyword":"LINK", - "docstr":"`LINK` — Create a hard link\n\n### Description\nMakes a (hard) link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`link(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LINK(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nSYMLNK, UNLINK\n" -} \ No newline at end of file + "keyword": "LINK", + "docstr": "`LINK` — Create a hard link\n\n### Description\nMakes a (hard) link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`link(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LINK(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nSYMLNK, UNLINK\n" +} diff --git a/src/docs/LLE.json b/src/docs/LLE.json index e94e0f1c..36e5b367 100644 --- a/src/docs/LLE.json +++ b/src/docs/LLE.json @@ -1,4 +1,4 @@ { - "keyword":"LLE", - "docstr":"`LLE` — Lexical less than or equal\n\n### Description\nDetermines whether one string is lexically less than or equal to another\nstring, where the two strings are interpreted as containing ASCII\ncharacter codes. If the String A and String B are not the same length,\nthe shorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A <= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLT\n" -} \ No newline at end of file + "keyword": "LLE", + "docstr": "`LLE` — Lexical less than or equal\n\n### Description\nDetermines whether one string is lexically less than or equal to another\nstring, where the two strings are interpreted as containing ASCII\ncharacter codes. If the String A and String B are not the same length,\nthe shorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A <= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLT\n" +} diff --git a/src/docs/LLT.json b/src/docs/LLT.json index 2a1d784c..1b2a40c4 100644 --- a/src/docs/LLT.json +++ b/src/docs/LLT.json @@ -1,4 +1,4 @@ { - "keyword":"LLT", - "docstr":"`LLT` — Lexical less than\n\n### Description\nDetermines whether one string is lexically less than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A < STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLE\n" -} \ No newline at end of file + "keyword": "LLT", + "docstr": "`LLT` — Lexical less than\n\n### Description\nDetermines whether one string is lexically less than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A < STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLE\n" +} diff --git a/src/docs/LNBLNK.json b/src/docs/LNBLNK.json index 9897e858..01a68828 100644 --- a/src/docs/LNBLNK.json +++ b/src/docs/LNBLNK.json @@ -1,4 +1,4 @@ { - "keyword":"LNBLNK", - "docstr":"`LNBLNK` — Index of the last non-blank character in a string\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks. \nThis is identical to the standard `LEN_TRIM` intrinsic, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LNBLNK(STRING)`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)`
\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, LEN_TRIM\n" -} \ No newline at end of file + "keyword": "LNBLNK", + "docstr": "`LNBLNK` — Index of the last non-blank character in a string\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks. \nThis is identical to the standard `LEN_TRIM` intrinsic, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LNBLNK(STRING)`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)`
\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, LEN_TRIM\n" +} diff --git a/src/docs/LOC.json b/src/docs/LOC.json index bf349a43..aee2866d 100644 --- a/src/docs/LOC.json +++ b/src/docs/LOC.json @@ -1,4 +1,4 @@ { - "keyword":"LOC", - "docstr":"`LOC` — Returns the address of a variable\n\n### Description\n`LOC(X)` returns the address of `X` as an integer.\n\n\n\n### Syntax\n`RESULT = LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Variable of any type.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`, with a `KIND`corresponding to the size (in bytes) of a memory address on the target\nmachine.\n\n\n\n### Example\n\n ```\n\n\nprogram test_loc\n\n  integer :: i\n\n  real :: r\n\n  i = loc(r)\n\n  print *, i\n\nend program test_loc\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "LOC", + "docstr": "`LOC` — Returns the address of a variable\n\n### Description\n`LOC(X)` returns the address of `X` as an integer.\n\n\n\n### Syntax\n`RESULT = LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Variable of any type.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`, with a `KIND`corresponding to the size (in bytes) of a memory address on the target\nmachine.\n\n\n\n### Example\n```\n\n\nprogram test_loc\n\n  integer :: i\n\n  real :: r\n\n  i = loc(r)\n\n  print *, i\n\nend program test_loc\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/LOG.json b/src/docs/LOG.json index 87833051..e67fea82 100644 --- a/src/docs/LOG.json +++ b/src/docs/LOG.json @@ -1,4 +1,4 @@ { - "keyword":"LOG", - "docstr":"`LOG` — Natural logarithm function\n\n### Description\n`LOG(X)` computes the natural logarithm of `X`, i.e. the\nlogarithm to the base e.\n\n\n\n### Syntax\n`RESULT = LOG(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`. \nIf `X` is `COMPLEX`, the imaginary part \\omega is in the range\n-\\pi < \\omega \\leq \\pi.\n\n\n\n### Example\n\n ```\n\n\nprogram test_log\n\n  real(8) :: x = 2.7182818284590451_8\n\n  complex :: z = (1.0, 2.0)\n\n  x = log(x) ! will yield (approximately) 1\n\n  z = log(z)\n\nend program test_log\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG(X)` | `REAL(4) X` | `REAL(4)` | f95, gnu\n\n | `DLOG(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CLOG(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "LOG", + "docstr": "`LOG` — Natural logarithm function\n\n### Description\n`LOG(X)` computes the natural logarithm of `X`, i.e. the\nlogarithm to the base e.\n\n\n\n### Syntax\n`RESULT = LOG(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`. \nIf `X` is `COMPLEX`, the imaginary part \\omega is in the range\n-\\pi < \\omega \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_log\n\n  real(8) :: x = 2.7182818284590451_8\n\n  complex :: z = (1.0, 2.0)\n\n  x = log(x) ! will yield (approximately) 1\n\n  z = log(z)\n\nend program test_log\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG(X)` | `REAL(4) X` | `REAL(4)` | f95, gnu\n\n | `DLOG(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CLOG(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/LOG10.json b/src/docs/LOG10.json index d71d45a3..505f774d 100644 --- a/src/docs/LOG10.json +++ b/src/docs/LOG10.json @@ -1,4 +1,4 @@ { - "keyword":"LOG10", - "docstr":"`LOG10` — Base 10 logarithm function\n\n### Description\n`LOG10(X)` computes the base 10 logarithm of `X`.\n\n\n\n### Syntax\n`RESULT = LOG10(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_log10\n\n  real(8) :: x = 10.0_8\n\n  x = log10(x)\n\nend program test_log10\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG10(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DLOG10(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "LOG10", + "docstr": "`LOG10` — Base 10 logarithm function\n\n### Description\n`LOG10(X)` computes the base 10 logarithm of `X`.\n\n\n\n### Syntax\n`RESULT = LOG10(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log10\n\n  real(8) :: x = 10.0_8\n\n  x = log10(x)\n\nend program test_log10\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG10(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DLOG10(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/LOGICAL.json b/src/docs/LOGICAL.json index 8d30697e..a62e16e4 100644 --- a/src/docs/LOGICAL.json +++ b/src/docs/LOGICAL.json @@ -1,4 +1,4 @@ { - "keyword":"LOGICAL", - "docstr":"`LOGICAL` — Convert to logical type\n\n### Description\nConverts one kind of `LOGICAL` variable to another.\n\n\n\n### Syntax\n`RESULT = LOGICAL(L [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is a `LOGICAL` value equal to `L`, with a\nkind corresponding to `KIND`, or of the default logical kind if\n`KIND` is not given.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, REAL, CMPLX\n" -} \ No newline at end of file + "keyword": "LOGICAL", + "docstr": "`LOGICAL` — Convert to logical type\n\n### Description\nConverts one kind of `LOGICAL` variable to another.\n\n\n\n### Syntax\n`RESULT = LOGICAL(L [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is a `LOGICAL` value equal to `L`, with a\nkind corresponding to `KIND`, or of the default logical kind if\n`KIND` is not given.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, REAL, CMPLX\n" +} diff --git a/src/docs/LOG_GAMMA.json b/src/docs/LOG_GAMMA.json index 58444746..61ca6394 100644 --- a/src/docs/LOG_GAMMA.json +++ b/src/docs/LOG_GAMMA.json @@ -1,4 +1,4 @@ { - "keyword":"LOG_GAMMA", - "docstr":"`LOG_GAMMA` — Logarithm of the Gamma function\n\n### Description\n`LOG_GAMMA(X)` computes the natural logarithm of the absolute value\nof the Gamma (\\Gamma) function.\n\n\n\n### Syntax\n`X = LOG_GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_log_gamma\n\n  real :: x = 1.0\n\n  x = lgamma(x) ! returns 0.0\n\nend program test_log_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `ALGAMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DLGAMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nGamma function: GAMMA\n\n " -} \ No newline at end of file + "keyword": "LOG_GAMMA", + "docstr": "`LOG_GAMMA` — Logarithm of the Gamma function\n\n### Description\n`LOG_GAMMA(X)` computes the natural logarithm of the absolute value\nof the Gamma (\\Gamma) function.\n\n\n\n### Syntax\n`X = LOG_GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log_gamma\n\n  real :: x = 1.0\n\n  x = lgamma(x) ! returns 0.0\n\nend program test_log_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `ALGAMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DLGAMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nGamma function: GAMMA\n\n " +} diff --git a/src/docs/LONG.json b/src/docs/LONG.json index 58d5550b..c2cebc1b 100644 --- a/src/docs/LONG.json +++ b/src/docs/LONG.json @@ -1,4 +1,4 @@ { - "keyword":"LONG", - "docstr":"`LONG` — Convert to integer type\n\n### Description\nConvert to a `KIND=4` integer type, which is the same size as a C\n`long` integer. This is equivalent to the standard `INT`intrinsic with an optional argument of `KIND=4`, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LONG(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(4)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, INT8\n" -} \ No newline at end of file + "keyword": "LONG", + "docstr": "`LONG` — Convert to integer type\n\n### Description\nConvert to a `KIND=4` integer type, which is the same size as a C\n`long` integer. This is equivalent to the standard `INT`intrinsic with an optional argument of `KIND=4`, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LONG(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(4)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, INT8\n" +} diff --git a/src/docs/LSHIFT.json b/src/docs/LSHIFT.json index 0a325af4..c0f7ad62 100644 --- a/src/docs/LSHIFT.json +++ b/src/docs/LSHIFT.json @@ -1,4 +1,4 @@ { - "keyword":"LSHIFT", - "docstr":"`LSHIFT` — Left shift bits\n\n### Description\n`LSHIFT` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost; zeros are shifted in from\nthe opposite end.\n\n \nThis function has been superseded by the `ISHFT` intrinsic, which\nis standard in Fortran 95 and later, and the `SHIFTL` intrinsic,\nwhich is standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = LSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, RSHIFT, SHIFTA, SHIFTL,\nSHIFTR\n\n " -} \ No newline at end of file + "keyword": "LSHIFT", + "docstr": "`LSHIFT` — Left shift bits\n\n### Description\n`LSHIFT` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost; zeros are shifted in from\nthe opposite end.\n\n \nThis function has been superseded by the `ISHFT` intrinsic, which\nis standard in Fortran 95 and later, and the `SHIFTL` intrinsic,\nwhich is standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = LSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, RSHIFT, SHIFTA, SHIFTL,\nSHIFTR\n\n " +} diff --git a/src/docs/LSTAT.json b/src/docs/LSTAT.json index 14e2faaf..85e551ca 100644 --- a/src/docs/LSTAT.json +++ b/src/docs/LSTAT.json @@ -1,4 +1,4 @@ { - "keyword":"LSTAT", - "docstr":"`LSTAT` — Get file status\n\n### Description\n`LSTAT` is identical to STAT, except that if path is a\nsymbolic link, then the link itself is statted, not the file that it\nrefers to.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LSTAT(NAME, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n of the default\nkind, a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. \nReturns 0 on success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a file: STAT\n" -} \ No newline at end of file + "keyword": "LSTAT", + "docstr": "`LSTAT` — Get file status\n\n### Description\n`LSTAT` is identical to STAT, except that if path is a\nsymbolic link, then the link itself is statted, not the file that it\nrefers to.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LSTAT(NAME, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n of the default\nkind, a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. \nReturns 0 on success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a file: STAT\n" +} diff --git a/src/docs/LTIME.json b/src/docs/LTIME.json index 9480cf0d..529db386 100644 --- a/src/docs/LTIME.json +++ b/src/docs/LTIME.json @@ -1,4 +1,4 @@ { - "keyword":"LTIME", - "docstr":"`LTIME` — Convert time to local time info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the local time zone using `localtime(3)`.\n\n\n\n### Syntax\n`CALL LTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n
    \n
  1. Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
  2. Minutes after the hour, range 0–59\n
  3. Hours past midnight, range 0–23\n
  4. Day of month, range 0–31\n
  5. Number of months since January, range 0–12\n
  6. Years since 1900\n
  7. Number of days since Sunday, range 0–6\n
  8. Days since January 1\n
  9. Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, GMTIME, TIME, TIME8\n\n " -} \ No newline at end of file + "keyword": "LTIME", + "docstr": "`LTIME` — Convert time to local time info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the local time zone using `localtime(3)`.\n\n\n\n### Syntax\n`CALL LTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n
    \n
  1. Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
  2. Minutes after the hour, range 0–59\n
  3. Hours past midnight, range 0–23\n
  4. Day of month, range 0–31\n
  5. Number of months since January, range 0–12\n
  6. Years since 1900\n
  7. Number of days since Sunday, range 0–6\n
  8. Days since January 1\n
  9. Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, GMTIME, TIME, TIME8\n\n " +} diff --git a/src/docs/MALLOC.json b/src/docs/MALLOC.json index 86a26e18..d9265ef6 100644 --- a/src/docs/MALLOC.json +++ b/src/docs/MALLOC.json @@ -1,4 +1,4 @@ { - "keyword":"MALLOC", - "docstr":"`MALLOC` — Allocate dynamic memory\n\n### Description\n`MALLOC(SIZE)` allocates `SIZE` bytes of dynamic memory and\nreturns the address of the allocated memory. The `MALLOC` intrinsic\nis an extension intended to be used with Cray pointers, and is provided\nin GNU Fortran to allow the user to compile legacy code. For new code\nusing Fortran 95 pointers, the memory allocation intrinsic is\n`ALLOCATE`.\n\n\n\n### Syntax\n`PTR = MALLOC(SIZE)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(K)`, with `K` such that\nvariables of type `INTEGER(K)` have the same size as\nC pointers (`sizeof(void *)`).\n\n\n\n### Example\nThe following example demonstrates the use of `MALLOC` and\n`FREE` with Cray pointers.\n\n ```\n\n\nprogram test_malloc\n\n  implicit none\n\n  integer i\n\n  real*8 x(*), z\n\n  pointer(ptr_x,x)\n\n\n  ptr_x = malloc(20*8)\n\n  do i = 1, 20\n\n    x(i) = sqrt(1.0d0 / i)\n\n  end do\n\n  z = 0\n\n  do i = 1, 20\n\n    z = z + x(i)\n\n    print *, z\n\n  end do\n\n  call free(ptr_x)\n\nend program test_malloc\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFREE\n" -} \ No newline at end of file + "keyword": "MALLOC", + "docstr": "`MALLOC` — Allocate dynamic memory\n\n### Description\n`MALLOC(SIZE)` allocates `SIZE` bytes of dynamic memory and\nreturns the address of the allocated memory. The `MALLOC` intrinsic\nis an extension intended to be used with Cray pointers, and is provided\nin GNU Fortran to allow the user to compile legacy code. For new code\nusing Fortran 95 pointers, the memory allocation intrinsic is\n`ALLOCATE`.\n\n\n\n### Syntax\n`PTR = MALLOC(SIZE)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(K)`, with `K` such that\nvariables of type `INTEGER(K)` have the same size as\nC pointers (`sizeof(void *)`).\n\n\n\n### Example\nThe following example demonstrates the use of `MALLOC` and\n`FREE` with Cray pointers.\n\n```\n\n\nprogram test_malloc\n\n  implicit none\n\n  integer i\n\n  real*8 x(*), z\n\n  pointer(ptr_x,x)\n\n\n  ptr_x = malloc(20*8)\n\n  do i = 1, 20\n\n    x(i) = sqrt(1.0d0 / i)\n\n  end do\n\n  z = 0\n\n  do i = 1, 20\n\n    z = z + x(i)\n\n    print *, z\n\n  end do\n\n  call free(ptr_x)\n\nend program test_malloc\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFREE\n" +} diff --git a/src/docs/MASKL.json b/src/docs/MASKL.json index bb27f7c5..f9f13f57 100644 --- a/src/docs/MASKL.json +++ b/src/docs/MASKL.json @@ -1,4 +1,4 @@ { - "keyword":"MASKL", - "docstr":"`MASKL` — Left justified mask\n\n### Description\n`MASKL(I[, KIND])` has its leftmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKL(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKR\n" -} \ No newline at end of file + "keyword": "MASKL", + "docstr": "`MASKL` — Left justified mask\n\n### Description\n`MASKL(I[, KIND])` has its leftmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKL(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKR\n" +} diff --git a/src/docs/MASKR.json b/src/docs/MASKR.json index 17793802..0190e419 100644 --- a/src/docs/MASKR.json +++ b/src/docs/MASKR.json @@ -1,4 +1,4 @@ { - "keyword":"MASKR", - "docstr":"`MASKR` — Right justified mask\n\n### Description\n`MASKL(I[, KIND])` has its rightmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKR(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKL\n" -} \ No newline at end of file + "keyword": "MASKR", + "docstr": "`MASKR` — Right justified mask\n\n### Description\n`MASKL(I[, KIND])` has its rightmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKR(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKL\n" +} diff --git a/src/docs/MATMUL.json b/src/docs/MATMUL.json index 40a1d9d1..fb39248e 100644 --- a/src/docs/MATMUL.json +++ b/src/docs/MATMUL.json @@ -1,4 +1,4 @@ { - "keyword":"MATMUL", - "docstr":"`MATMUL` — matrix multiplication\n\n### Description\nPerforms a matrix multiplication on numeric or logical arguments.\n\n\n\n### Syntax\n`RESULT = MATMUL(MATRIX_A, MATRIX_B)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX`, or `LOGICAL` type, with a rank of\none or two. \n\n | `MATRIX_B` | An array of `INTEGER`,\n`REAL`, or `COMPLEX` type if `MATRIX_A` is of a numeric\ntype; otherwise, an array of `LOGICAL` type. The rank shall be one\nor two, and the first (or only) dimension of `MATRIX_B` shall be\nequal to the last (or only) dimension of `MATRIX_A`.\n\n\n\n\n\n\n### Return value\nThe matrix product of `MATRIX_A` and `MATRIX_B`. The type and\nkind of the result follow the usual type and kind promotion rules, as\nfor the `*` or `.AND.` operators.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\n" -} \ No newline at end of file + "keyword": "MATMUL", + "docstr": "`MATMUL` — matrix multiplication\n\n### Description\nPerforms a matrix multiplication on numeric or logical arguments.\n\n\n\n### Syntax\n`RESULT = MATMUL(MATRIX_A, MATRIX_B)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX`, or `LOGICAL` type, with a rank of\none or two. \n\n | `MATRIX_B` | An array of `INTEGER`,\n`REAL`, or `COMPLEX` type if `MATRIX_A` is of a numeric\ntype; otherwise, an array of `LOGICAL` type. The rank shall be one\nor two, and the first (or only) dimension of `MATRIX_B` shall be\nequal to the last (or only) dimension of `MATRIX_A`.\n\n\n\n\n\n\n### Return value\nThe matrix product of `MATRIX_A` and `MATRIX_B`. The type and\nkind of the result follow the usual type and kind promotion rules, as\nfor the `*` or `.AND.` operators.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\n" +} diff --git a/src/docs/MAX.json b/src/docs/MAX.json index 46900e97..bb320f58 100644 --- a/src/docs/MAX.json +++ b/src/docs/MAX.json @@ -1,4 +1,4 @@ { - "keyword":"MAX", - "docstr":"`MAX` — Maximum value of an argument list\n\n### Description\nReturns the argument with the largest (most positive) value.\n\n\n\n### Syntax\n`RESULT = MAX(A1, A2 [, A3 [, ...]])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MAX0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMAX0(A1)` | `INTEGER(4) A1` | `REAL(MAX(X))` | Fortran 77 and later\n\n | `MAX1(A1)` | `REAL A1` | `INT(MAX(X))` | Fortran 77 and later\n\n | `AMAX1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMAX1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAXLOC MAXVAL, MIN\n\n " -} \ No newline at end of file + "keyword": "MAX", + "docstr": "`MAX` — Maximum value of an argument list\n\n### Description\nReturns the argument with the largest (most positive) value.\n\n\n\n### Syntax\n`RESULT = MAX(A1, A2 [, A3 [, ...]])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MAX0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMAX0(A1)` | `INTEGER(4) A1` | `REAL(MAX(X))` | Fortran 77 and later\n\n | `MAX1(A1)` | `REAL A1` | `INT(MAX(X))` | Fortran 77 and later\n\n | `AMAX1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMAX1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAXLOC MAXVAL, MIN\n\n " +} diff --git a/src/docs/MAXEXPONENT.json b/src/docs/MAXEXPONENT.json index a171fe61..6b683d9f 100644 --- a/src/docs/MAXEXPONENT.json +++ b/src/docs/MAXEXPONENT.json @@ -1,4 +1,4 @@ { - "keyword":"MAXEXPONENT", - "docstr":"`MAXEXPONENT` — Maximum exponent of a real kind\n\n### Description\n`MAXEXPONENT(X)` returns the maximum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MAXEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n\n ```\n\n\nprogram exponents\n\n  real(kind=4) :: x\n\n  real(kind=8) :: y\n\n\n  print *, minexponent(x), maxexponent(x)\n\n  print *, minexponent(y), maxexponent(y)\n\nend program exponents\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "MAXEXPONENT", + "docstr": "`MAXEXPONENT` — Maximum exponent of a real kind\n\n### Description\n`MAXEXPONENT(X)` returns the maximum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MAXEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram exponents\n\n  real(kind=4) :: x\n\n  real(kind=8) :: y\n\n\n  print *, minexponent(x), maxexponent(x)\n\n  print *, minexponent(y), maxexponent(y)\n\nend program exponents\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/MAXLOC.json b/src/docs/MAXLOC.json index 8556d5d1..0fdd4620 100644 --- a/src/docs/MAXLOC.json +++ b/src/docs/MAXLOC.json @@ -1,4 +1,4 @@ { - "keyword":"MAXLOC", - "docstr":"`MAXLOC` — Location of the maximum value within an array\n\n### Description\nDetermines the location of the element in the array with the maximum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the maximum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the maximum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXLOC(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXVAL\n\n " -} \ No newline at end of file + "keyword": "MAXLOC", + "docstr": "`MAXLOC` — Location of the maximum value within an array\n\n### Description\nDetermines the location of the element in the array with the maximum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the maximum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the maximum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXLOC(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXVAL\n\n " +} diff --git a/src/docs/MAXVAL.json b/src/docs/MAXVAL.json index 2ba1f535..c2e1ff71 100644 --- a/src/docs/MAXVAL.json +++ b/src/docs/MAXVAL.json @@ -1,4 +1,4 @@ { - "keyword":"MAXVAL", - "docstr":"`MAXVAL` — Maximum value of an array\n\n### Description\nDetermines the maximum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the maximum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `-HUGE(ARRAY)`if `ARRAY` is numeric, or a string of nulls if `ARRAY` is of character\ntype.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXVAL(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXLOC\n" -} \ No newline at end of file + "keyword": "MAXVAL", + "docstr": "`MAXVAL` — Maximum value of an array\n\n### Description\nDetermines the maximum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the maximum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `-HUGE(ARRAY)`if `ARRAY` is numeric, or a string of nulls if `ARRAY` is of character\ntype.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXVAL(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXLOC\n" +} diff --git a/src/docs/MCLOCK.json b/src/docs/MCLOCK.json index 77a1bf1b..017c8da7 100644 --- a/src/docs/MCLOCK.json +++ b/src/docs/MCLOCK.json @@ -1,4 +1,4 @@ { - "keyword":"MCLOCK", - "docstr":"`MCLOCK` — Time function\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME\n\n " -} \ No newline at end of file + "keyword": "MCLOCK", + "docstr": "`MCLOCK` — Time function\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME\n\n " +} diff --git a/src/docs/MCLOCK8.json b/src/docs/MCLOCK8.json index f3fa0240..bde727a6 100644 --- a/src/docs/MCLOCK8.json +++ b/src/docs/MCLOCK8.json @@ -1,4 +1,4 @@ { - "keyword":"MCLOCK8", - "docstr":"`MCLOCK8` — Time function (64-bit)\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `clock(3)`. On a system with a 32-bit\n`clock(3)`, `MCLOCK8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n " -} \ No newline at end of file + "keyword": "MCLOCK8", + "docstr": "`MCLOCK8` — Time function (64-bit)\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `clock(3)`. On a system with a 32-bit\n`clock(3)`, `MCLOCK8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n " +} diff --git a/src/docs/MERGE.json b/src/docs/MERGE.json index 8bfdab8c..325970fa 100644 --- a/src/docs/MERGE.json +++ b/src/docs/MERGE.json @@ -1,4 +1,4 @@ { - "keyword":"MERGE", - "docstr":"`MERGE` — Merge variables\n\n### Description\nSelect values from two arrays according to a logical mask. The result\nis equal to `TSOURCE` if `MASK` is `.TRUE.`, or equal to\n`FSOURCE` if it is `.FALSE.`.\n\n\n\n### Syntax\n`RESULT = MERGE(TSOURCE, FSOURCE, MASK)`\n\n\n### Arguments\n\n \n | `TSOURCE` | May be of any type. \n\n | `FSOURCE` | Shall be of the same type and type parameters\nas `TSOURCE`. \n\n | `MASK` | Shall be of type `LOGICAL`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and type parameters as `TSOURCE`.\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "MERGE", + "docstr": "`MERGE` — Merge variables\n\n### Description\nSelect values from two arrays according to a logical mask. The result\nis equal to `TSOURCE` if `MASK` is `.TRUE.`, or equal to\n`FSOURCE` if it is `.FALSE.`.\n\n\n\n### Syntax\n`RESULT = MERGE(TSOURCE, FSOURCE, MASK)`\n\n\n### Arguments\n\n \n | `TSOURCE` | May be of any type. \n\n | `FSOURCE` | Shall be of the same type and type parameters\nas `TSOURCE`. \n\n | `MASK` | Shall be of type `LOGICAL`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and type parameters as `TSOURCE`.\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/MERGE_BITS.json b/src/docs/MERGE_BITS.json index d216e621..9dae7f79 100644 --- a/src/docs/MERGE_BITS.json +++ b/src/docs/MERGE_BITS.json @@ -1,4 +1,4 @@ { - "keyword":"MERGE_BITS", - "docstr":"`MERGE_BITS` — Merge of bits under mask\n\n### Description\n`MERGE_BITS(I, J, MASK)` merges the bits of `I` and `J`\nas determined by the mask. The i-th bit of the result is equal to the\ni-th bit of `I` if the i-th bit of `MASK` is 1; it is equal to\nthe i-th bit of `J` otherwise.\n\n\n\n### Syntax\n`RESULT = MERGE_BITS(I, J, MASK)`\n\n\n### Arguments\n\n \n. \n\n | `J` | Shall be of type `INTEGER` and of the same\nkind as `I`. \n\n | `MASK` | Shall be of type `INTEGER` and of the same\nkind as `I`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and kind as `I`.\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "MERGE_BITS", + "docstr": "`MERGE_BITS` — Merge of bits under mask\n\n### Description\n`MERGE_BITS(I, J, MASK)` merges the bits of `I` and `J`\nas determined by the mask. The i-th bit of the result is equal to the\ni-th bit of `I` if the i-th bit of `MASK` is 1; it is equal to\nthe i-th bit of `J` otherwise.\n\n\n\n### Syntax\n`RESULT = MERGE_BITS(I, J, MASK)`\n\n\n### Arguments\n\n \n. \n\n | `J` | Shall be of type `INTEGER` and of the same\nkind as `I`. \n\n | `MASK` | Shall be of type `INTEGER` and of the same\nkind as `I`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and kind as `I`.\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/MIN.json b/src/docs/MIN.json index b6a724e9..e8056129 100644 --- a/src/docs/MIN.json +++ b/src/docs/MIN.json @@ -1,4 +1,4 @@ { - "keyword":"MIN", - "docstr":"`MIN` — Minimum value of an argument list\n\n### Description\nReturns the argument with the smallest (most negative) value.\n\n\n\n### Syntax\n`RESULT = MIN(A1, A2 [, A3, ...])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MIN0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN0(A1)` | `INTEGER(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `MIN1(A1)` | `REAL A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMIN1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAX, MINLOC, MINVAL\n" -} \ No newline at end of file + "keyword": "MIN", + "docstr": "`MIN` — Minimum value of an argument list\n\n### Description\nReturns the argument with the smallest (most negative) value.\n\n\n\n### Syntax\n`RESULT = MIN(A1, A2 [, A3, ...])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MIN0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN0(A1)` | `INTEGER(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `MIN1(A1)` | `REAL A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMIN1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAX, MINLOC, MINVAL\n" +} diff --git a/src/docs/MINEXPONENT.json b/src/docs/MINEXPONENT.json index 6b454fe8..be614611 100644 --- a/src/docs/MINEXPONENT.json +++ b/src/docs/MINEXPONENT.json @@ -1,4 +1,4 @@ { - "keyword":"MINEXPONENT", - "docstr":"`MINEXPONENT` — Minimum exponent of a real kind\n\n### Description\n`MINEXPONENT(X)` returns the minimum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MINEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `MAXEXPONENT` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "MINEXPONENT", + "docstr": "`MINEXPONENT` — Minimum exponent of a real kind\n\n### Description\n`MINEXPONENT(X)` returns the minimum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MINEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `MAXEXPONENT` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/MINLOC.json b/src/docs/MINLOC.json index a1adca15..4941aee5 100644 --- a/src/docs/MINLOC.json +++ b/src/docs/MINLOC.json @@ -1,4 +1,4 @@ { - "keyword":"MINLOC", - "docstr":"`MINLOC` — Location of the minimum value within an array\n\n### Description\nDetermines the location of the element in the array with the minimum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the minimum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the minimum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINLOC(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINVAL\n\n " -} \ No newline at end of file + "keyword": "MINLOC", + "docstr": "`MINLOC` — Location of the minimum value within an array\n\n### Description\nDetermines the location of the element in the array with the minimum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the minimum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the minimum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINLOC(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINVAL\n\n " +} diff --git a/src/docs/MINVAL.json b/src/docs/MINVAL.json index 65857a7c..f7a8a82d 100644 --- a/src/docs/MINVAL.json +++ b/src/docs/MINVAL.json @@ -1,4 +1,4 @@ { - "keyword":"MINVAL", - "docstr":"`MINVAL` — Minimum value of an array\n\n### Description\nDetermines the minimum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the minimum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `HUGE(ARRAY)` if\n`ARRAY` is numeric, or a string of `CHAR(255)` characters if\n`ARRAY` is of character type.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINVAL(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINLOC\n\n " -} \ No newline at end of file + "keyword": "MINVAL", + "docstr": "`MINVAL` — Minimum value of an array\n\n### Description\nDetermines the minimum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the minimum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `HUGE(ARRAY)` if\n`ARRAY` is numeric, or a string of `CHAR(255)` characters if\n`ARRAY` is of character type.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINVAL(ARRAY [, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINLOC\n\n " +} diff --git a/src/docs/MOD.json b/src/docs/MOD.json index 16cacc33..024d9ceb 100644 --- a/src/docs/MOD.json +++ b/src/docs/MOD.json @@ -1,4 +1,4 @@ { - "keyword":"MOD", - "docstr":"`MOD` — Remainder function\n\n### Description\n`MOD(A,P)` computes the remainder of the division of A by P.\n\n\n\n### Syntax\n`RESULT = MOD(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`\nand not equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is the result of `A - (INT(A/P) * P)`. The type\nand kind of the return value is the same as that of the arguments. The\nreturned value has the same sign as A and a magnitude less than the\nmagnitude of P.\n\n\n\n### Example\n\n ```\n\n\nprogram test_mod\n\n  print *, mod(17,3)\n\n  print *, mod(17.5,5.5)\n\n  print *, mod(17.5d0,5.5)\n\n  print *, mod(17.5,5.5d0)\n\n\n  print *, mod(-17,3)\n\n  print *, mod(-17.5,5.5)\n\n  print *, mod(-17.5d0,5.5)\n\n  print *, mod(-17.5,5.5d0)\n\n\n  print *, mod(17,-3)\n\n  print *, mod(17.5,-5.5)\n\n  print *, mod(17.5d0,-5.5)\n\n  print *, mod(17.5,-5.5d0)\n\nend program test_mod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `MOD(A,P)` | `INTEGER A,P` | `INTEGER` | Fortran 95 and later\n\n | `AMOD(A,P)` | `REAL(4) A,P` | `REAL(4)` | Fortran 95 and later\n\n | `DMOD(A,P)` | `REAL(8) A,P` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMODULO\n\n " -} \ No newline at end of file + "keyword": "MOD", + "docstr": "`MOD` — Remainder function\n\n### Description\n`MOD(A,P)` computes the remainder of the division of A by P.\n\n\n\n### Syntax\n`RESULT = MOD(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`\nand not equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is the result of `A - (INT(A/P) * P)`. The type\nand kind of the return value is the same as that of the arguments. The\nreturned value has the same sign as A and a magnitude less than the\nmagnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_mod\n\n  print *, mod(17,3)\n\n  print *, mod(17.5,5.5)\n\n  print *, mod(17.5d0,5.5)\n\n  print *, mod(17.5,5.5d0)\n\n\n  print *, mod(-17,3)\n\n  print *, mod(-17.5,5.5)\n\n  print *, mod(-17.5d0,5.5)\n\n  print *, mod(-17.5,5.5d0)\n\n\n  print *, mod(17,-3)\n\n  print *, mod(17.5,-5.5)\n\n  print *, mod(17.5d0,-5.5)\n\n  print *, mod(17.5,-5.5d0)\n\nend program test_mod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `MOD(A,P)` | `INTEGER A,P` | `INTEGER` | Fortran 95 and later\n\n | `AMOD(A,P)` | `REAL(4) A,P` | `REAL(4)` | Fortran 95 and later\n\n | `DMOD(A,P)` | `REAL(8) A,P` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMODULO\n\n " +} diff --git a/src/docs/MODULO.json b/src/docs/MODULO.json index 06c58ed9..848ab2da 100644 --- a/src/docs/MODULO.json +++ b/src/docs/MODULO.json @@ -1,4 +1,4 @@ { - "keyword":"MODULO", - "docstr":"`MODULO` — Modulo function\n\n### Description\n`MODULO(A,P)` computes the `A` modulo `P`.\n\n\n\n### Syntax\n`RESULT = MODULO(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`. \nIt shall not be zero.\n\n\n\n\n\n\n### Return value\nThe type and kind of the result are those of the arguments.\n
\n**If `A` and `P` are of type `INTEGER`:** `MODULO(A,P)` has the value `R` such that `A=Q*P+R`, where\n`Q` is an integer and `R` is between 0 (inclusive) and `P`\n(exclusive). \n\n**If `A` and `P` are of type `REAL`:** `MODULO(A,P)` has the value of `A - FLOOR (A / P) * P`. \n\n
\n The returned value has the same sign as P and a magnitude less than\nthe magnitude of P.\n\n\n\n### Example\n\n ```\n\n\nprogram test_modulo\n\n  print *, modulo(17,3)\n\n  print *, modulo(17.5,5.5)\n\n\n  print *, modulo(-17,3)\n\n  print *, modulo(-17.5,5.5)\n\n\n  print *, modulo(17,-3)\n\n  print *, modulo(17.5,-5.5)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMOD\n\n " -} \ No newline at end of file + "keyword": "MODULO", + "docstr": "`MODULO` — Modulo function\n\n### Description\n`MODULO(A,P)` computes the `A` modulo `P`.\n\n\n\n### Syntax\n`RESULT = MODULO(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`. \nIt shall not be zero.\n\n\n\n\n\n\n### Return value\nThe type and kind of the result are those of the arguments.\n
\n**If `A` and `P` are of type `INTEGER`:** `MODULO(A,P)` has the value `R` such that `A=Q*P+R`, where\n`Q` is an integer and `R` is between 0 (inclusive) and `P`\n(exclusive). \n\n**If `A` and `P` are of type `REAL`:** `MODULO(A,P)` has the value of `A - FLOOR (A / P) * P`. \n\n
\n The returned value has the same sign as P and a magnitude less than\nthe magnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_modulo\n\n  print *, modulo(17,3)\n\n  print *, modulo(17.5,5.5)\n\n\n  print *, modulo(-17,3)\n\n  print *, modulo(-17.5,5.5)\n\n\n  print *, modulo(17,-3)\n\n  print *, modulo(17.5,-5.5)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMOD\n\n " +} diff --git a/src/docs/MOVE_ALLOC.json b/src/docs/MOVE_ALLOC.json index ed844c3a..9ceccf98 100644 --- a/src/docs/MOVE_ALLOC.json +++ b/src/docs/MOVE_ALLOC.json @@ -1,4 +1,4 @@ { - "keyword":"MOVE_ALLOC", - "docstr":"`MOVE_ALLOC` — Move allocation from one object to another\n\n### Description\n`MOVE_ALLOC(FROM, TO)` moves the allocation from `FROM` to\n`TO`. `FROM` will become deallocated in the process.\n\n\n\n### Syntax\n`CALL MOVE_ALLOC(FROM, TO)`\n\n\n### Arguments\n\n \n, may be\nof any type and kind. \n\n | `TO` | `ALLOCATABLE`, `INTENT(OUT)`, shall be\nof the same type, kind and rank as `FROM`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n\n ```\n\n\nprogram test_move_alloc\n\n    integer, allocatable :: a(:), b(:)\n\n\n    allocate(a(3))\n\n    a = [ 1, 2, 3 ]\n\n    call move_alloc(a, b)\n\n    print *, allocated(a), allocated(b)\n\n    print *, b\n\nend program test_move_alloc\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nPure subroutine\n\n\n" -} \ No newline at end of file + "keyword": "MOVE_ALLOC", + "docstr": "`MOVE_ALLOC` — Move allocation from one object to another\n\n### Description\n`MOVE_ALLOC(FROM, TO)` moves the allocation from `FROM` to\n`TO`. `FROM` will become deallocated in the process.\n\n\n\n### Syntax\n`CALL MOVE_ALLOC(FROM, TO)`\n\n\n### Arguments\n\n \n, may be\nof any type and kind. \n\n | `TO` | `ALLOCATABLE`, `INTENT(OUT)`, shall be\nof the same type, kind and rank as `FROM`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_move_alloc\n\n    integer, allocatable :: a(:), b(:)\n\n\n    allocate(a(3))\n\n    a = [ 1, 2, 3 ]\n\n    call move_alloc(a, b)\n\n    print *, allocated(a), allocated(b)\n\n    print *, b\n\nend program test_move_alloc\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nPure subroutine\n\n\n" +} diff --git a/src/docs/MVBITS.json b/src/docs/MVBITS.json index e20147ab..4a499b39 100644 --- a/src/docs/MVBITS.json +++ b/src/docs/MVBITS.json @@ -1,4 +1,4 @@ { - "keyword":"MVBITS", - "docstr":"`MVBITS` — Move bits from one integer to another\n\n### Description\nMoves `LEN` bits from positions `FROMPOS` through\n`FROMPOS+LEN-1` of `FROM` to positions `TOPOS` through\n`TOPOS+LEN-1` of `TO`. The portion of argument `TO` not\naffected by the movement of bits is unchanged. The values of\n`FROMPOS+LEN-1` and `TOPOS+LEN-1` must be less than\n`BIT_SIZE(FROM)`.\n\n\n\n### Syntax\n`CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)`\n\n\n### Arguments\n\n \n. \n\n | `FROMPOS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`. \n\n | `TO` | The type shall be `INTEGER`, of the\nsame kind as `FROM`. \n\n | `TOPOS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental subroutine\n\n\n\n### See also\nIBCLR, IBSET, IBITS, IAND, IOR, IEOR\n" -} \ No newline at end of file + "keyword": "MVBITS", + "docstr": "`MVBITS` — Move bits from one integer to another\n\n### Description\nMoves `LEN` bits from positions `FROMPOS` through\n`FROMPOS+LEN-1` of `FROM` to positions `TOPOS` through\n`TOPOS+LEN-1` of `TO`. The portion of argument `TO` not\naffected by the movement of bits is unchanged. The values of\n`FROMPOS+LEN-1` and `TOPOS+LEN-1` must be less than\n`BIT_SIZE(FROM)`.\n\n\n\n### Syntax\n`CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)`\n\n\n### Arguments\n\n \n. \n\n | `FROMPOS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`. \n\n | `TO` | The type shall be `INTEGER`, of the\nsame kind as `FROM`. \n\n | `TOPOS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental subroutine\n\n\n\n### See also\nIBCLR, IBSET, IBITS, IAND, IOR, IEOR\n" +} diff --git a/src/docs/NEAREST.json b/src/docs/NEAREST.json index 6c69ed78..6fb2b21b 100644 --- a/src/docs/NEAREST.json +++ b/src/docs/NEAREST.json @@ -1,4 +1,4 @@ { - "keyword":"NEAREST", - "docstr":"`NEAREST` — Nearest representable number\n\n### Description\n`NEAREST(X, S)` returns the processor-representable number nearest\nto `X` in the direction indicated by the sign of `S`.\n\n\n\n### Syntax\n`RESULT = NEAREST(X, S)`\n\n\n### Arguments\n\n \n. \n\n | `S` | Shall be of type `REAL` and\nnot equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type as `X`. If `S` is\npositive, `NEAREST` returns the processor-representable number\ngreater than `X` and nearest to it. If `S` is negative,\n`NEAREST` returns the processor-representable number smaller than\n`X` and nearest to it.\n\n\n\n### Example\n\n ```\n\n\nprogram test_nearest\n\n  real :: x, y\n\n  x = nearest(42.0, 1.0)\n\n  y = nearest(42.0, -1.0)\n\n  write (*,\"(3(G20.15))\") x, y, x - y\n\nend program test_nearest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "NEAREST", + "docstr": "`NEAREST` — Nearest representable number\n\n### Description\n`NEAREST(X, S)` returns the processor-representable number nearest\nto `X` in the direction indicated by the sign of `S`.\n\n\n\n### Syntax\n`RESULT = NEAREST(X, S)`\n\n\n### Arguments\n\n \n. \n\n | `S` | Shall be of type `REAL` and\nnot equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type as `X`. If `S` is\npositive, `NEAREST` returns the processor-representable number\ngreater than `X` and nearest to it. If `S` is negative,\n`NEAREST` returns the processor-representable number smaller than\n`X` and nearest to it.\n\n\n\n### Example\n```\n\n\nprogram test_nearest\n\n  real :: x, y\n\n  x = nearest(42.0, 1.0)\n\n  y = nearest(42.0, -1.0)\n\n  write (*,\"(3(G20.15))\") x, y, x - y\n\nend program test_nearest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/NEW_LINE.json b/src/docs/NEW_LINE.json index 4227e663..31ddfcd7 100644 --- a/src/docs/NEW_LINE.json +++ b/src/docs/NEW_LINE.json @@ -1,4 +1,4 @@ { - "keyword":"NEW_LINE", - "docstr":"`NEW_LINE` — New line character\n\n### Description\n`NEW_LINE(C)` returns the new-line character.\n\n\n\n### Syntax\n`RESULT = NEW_LINE(C)`\n\n\n### Arguments\n\n \n | `C` | The argument shall be a scalar or array of the\ntype `CHARACTER`.\n\n\n\n\n\n\n### Return value\nReturns a `CHARACTER` scalar of length one with the new-line character of\nthe same kind as parameter `C`.\n\n\n\n### Example\n\n ```\n\n\nprogram newline\n\n  implicit none\n\n  write(*,'(A)') 'This is record 1.'//NEW_LINE('A')//'This is record 2.'\n\nend program newline\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "NEW_LINE", + "docstr": "`NEW_LINE` — New line character\n\n### Description\n`NEW_LINE(C)` returns the new-line character.\n\n\n\n### Syntax\n`RESULT = NEW_LINE(C)`\n\n\n### Arguments\n\n \n | `C` | The argument shall be a scalar or array of the\ntype `CHARACTER`.\n\n\n\n\n\n\n### Return value\nReturns a `CHARACTER` scalar of length one with the new-line character of\nthe same kind as parameter `C`.\n\n\n\n### Example\n```\n\n\nprogram newline\n\n  implicit none\n\n  write(*,'(A)') 'This is record 1.'//NEW_LINE('A')//'This is record 2.'\n\nend program newline\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/NINT.json b/src/docs/NINT.json index aa1afbef..69d97bcc 100644 --- a/src/docs/NINT.json +++ b/src/docs/NINT.json @@ -1,4 +1,4 @@ { - "keyword":"NINT", - "docstr":"`NINT` — Nearest whole number\n\n### Description\n`NINT(A)` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = NINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nReturns `A` with the fractional portion of its magnitude eliminated by\nrounding to the nearest whole number and with its sign preserved,\nconverted to an `INTEGER` of the default kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_nint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, nint(x4), idnint(x8)\n\nend program test_nint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return Type | Standard\n\n | `NINT(A)` | `REAL(4) A` | `INTEGER` | Fortran 95 and later\n\n | `IDNINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, FLOOR\n\n " -} \ No newline at end of file + "keyword": "NINT", + "docstr": "`NINT` — Nearest whole number\n\n### Description\n`NINT(A)` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = NINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nReturns `A` with the fractional portion of its magnitude eliminated by\nrounding to the nearest whole number and with its sign preserved,\nconverted to an `INTEGER` of the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_nint\n\n  real(4) x4\n\n  real(8) x8\n\n  x4 = 1.234E0_4\n\n  x8 = 4.321_8\n\n  print *, nint(x4), idnint(x8)\n\nend program test_nint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return Type | Standard\n\n | `NINT(A)` | `REAL(4) A` | `INTEGER` | Fortran 95 and later\n\n | `IDNINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, FLOOR\n\n " +} diff --git a/src/docs/NORM2.json b/src/docs/NORM2.json index 92ff50d8..83d2a911 100644 --- a/src/docs/NORM2.json +++ b/src/docs/NORM2.json @@ -1,4 +1,4 @@ { - "keyword":"NORM2", - "docstr":"`NORM2` — Euclidean vector norms\n\n### Description\nCalculates the Euclidean vector norm (L_2 norm) of\nof `ARRAY` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the square root of the sum of all\nelements in `ARRAY` squared is returned. Otherwise, an array of\nrank n-1, where n equals the rank of `ARRAY`, and a\nshape similar to that of `ARRAY` with dimension `DIM` dropped\nis returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_sum\n\n  REAL :: x(5) = [ real :: 1, 2, 3, 4, 5 ]\n\n  print *, NORM2(x) ! = sqrt(55.) ~ 7.416\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "NORM2", + "docstr": "`NORM2` — Euclidean vector norms\n\n### Description\nCalculates the Euclidean vector norm (L_2 norm) of\nof `ARRAY` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the square root of the sum of all\nelements in `ARRAY` squared is returned. Otherwise, an array of\nrank n-1, where n equals the rank of `ARRAY`, and a\nshape similar to that of `ARRAY` with dimension `DIM` dropped\nis returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n  REAL :: x(5) = [ real :: 1, 2, 3, 4, 5 ]\n\n  print *, NORM2(x) ! = sqrt(55.) ~ 7.416\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/NOT.json b/src/docs/NOT.json index 0303d6f4..4abeb419 100644 --- a/src/docs/NOT.json +++ b/src/docs/NOT.json @@ -1,4 +1,4 @@ { - "keyword":"NOT", - "docstr":"`NOT` — Logical negation\n\n### Description\n`NOT` returns the bitwise Boolean inverse of `I`.\n\n\n\n### Syntax\n`RESULT = NOT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\nargument.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIAND, IEOR, IOR, IBITS, IBSET, IBCLR\n\n " -} \ No newline at end of file + "keyword": "NOT", + "docstr": "`NOT` — Logical negation\n\n### Description\n`NOT` returns the bitwise Boolean inverse of `I`.\n\n\n\n### Syntax\n`RESULT = NOT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\nargument.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIAND, IEOR, IOR, IBITS, IBSET, IBCLR\n\n " +} diff --git a/src/docs/NULL.json b/src/docs/NULL.json index 1fa315a0..07f8b539 100644 --- a/src/docs/NULL.json +++ b/src/docs/NULL.json @@ -1,4 +1,4 @@ { - "keyword":"NULL", - "docstr":"`NULL` — Function that returns an disassociated pointer\n\n### Description\nReturns a disassociated pointer.\n\n \nIf `MOLD` is present, a disassociated pointer of the same type is\nreturned, otherwise the type is determined by context.\n\n \n\nIn Fortran 95, `MOLD` is optional. Please note that Fortran 2003\nincludes cases where it is required.\n\n\n\n\n### Syntax\n`PTR => NULL([MOLD])`\n\n\n### Arguments\n\n \n | `MOLD` | (Optional) shall be a pointer of any association\nstatus and of any type.\n\n\n\n\n\n\n### Return value\nA disassociated pointer.\n\n\n\n### Example\n\n ```\n\n\nREAL, POINTER, DIMENSION(:) :: VEC => NULL ()\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nASSOCIATED\n" -} \ No newline at end of file + "keyword": "NULL", + "docstr": "`NULL` — Function that returns an disassociated pointer\n\n### Description\nReturns a disassociated pointer.\n\n \nIf `MOLD` is present, a disassociated pointer of the same type is\nreturned, otherwise the type is determined by context.\n\n \n\nIn Fortran 95, `MOLD` is optional. Please note that Fortran 2003\nincludes cases where it is required.\n\n\n\n\n### Syntax\n`PTR => NULL([MOLD])`\n\n\n### Arguments\n\n \n | `MOLD` | (Optional) shall be a pointer of any association\nstatus and of any type.\n\n\n\n\n\n\n### Return value\nA disassociated pointer.\n\n\n\n### Example\n```\n\n\nREAL, POINTER, DIMENSION(:) :: VEC => NULL ()\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nASSOCIATED\n" +} diff --git a/src/docs/NUM_IMAGES.json b/src/docs/NUM_IMAGES.json index bc9a5ef5..ac0a1631 100644 --- a/src/docs/NUM_IMAGES.json +++ b/src/docs/NUM_IMAGES.json @@ -1,4 +1,4 @@ { - "keyword":"NUM_IMAGES", - "docstr":"`NUM_IMAGES` — Function that returns the number of images\n\n### Description\nReturns the number of images.\n\n\n\n### Syntax\n`RESULT = NUM_IMAGES(DISTANCE, FAILED)`\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n\n | `FAILED` | (optional, intent(in)) Scalar logical expression\n\n\n\n\n\n\n### Return value\nScalar default-kind integer. If `DISTANCE` is not present or has value 0,\nthe number of images in the current team is returned. For values smaller or\nequal distance to the initial team, it returns the number of images index\non the ancestor team which has a distance of `DISTANCE` from the invoking\nteam. If `DISTANCE` is larger than the distance to the initial team, the\nnumber of images of the initial team is returned. If `FAILED` is not present\nthe total number of images is returned; if it has the value `.TRUE.`,\nthe number of failed images is returned, otherwise, the number of images which\ndo have not the failed status.\n\n\n\n### Example\n\n ```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n  DO i = 1, NUM_IMAGES()\n\n    WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n  END DO\n\nEND IF\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` or `FAILED` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nTHIS_IMAGE, IMAGE_INDEX\n" -} \ No newline at end of file + "keyword": "NUM_IMAGES", + "docstr": "`NUM_IMAGES` — Function that returns the number of images\n\n### Description\nReturns the number of images.\n\n\n\n### Syntax\n`RESULT = NUM_IMAGES(DISTANCE, FAILED)`\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n\n | `FAILED` | (optional, intent(in)) Scalar logical expression\n\n\n\n\n\n\n### Return value\nScalar default-kind integer. If `DISTANCE` is not present or has value 0,\nthe number of images in the current team is returned. For values smaller or\nequal distance to the initial team, it returns the number of images index\non the ancestor team which has a distance of `DISTANCE` from the invoking\nteam. If `DISTANCE` is larger than the distance to the initial team, the\nnumber of images of the initial team is returned. If `FAILED` is not present\nthe total number of images is returned; if it has the value `.TRUE.`,\nthe number of failed images is returned, otherwise, the number of images which\ndo have not the failed status.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n  DO i = 1, NUM_IMAGES()\n\n    WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n  END DO\n\nEND IF\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` or `FAILED` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nTHIS_IMAGE, IMAGE_INDEX\n" +} diff --git a/src/docs/OR.json b/src/docs/OR.json index f186d2ab..b2283e69 100644 --- a/src/docs/OR.json +++ b/src/docs/OR.json @@ -1,4 +1,4 @@ { - "keyword":"OR", - "docstr":"`OR` — Bitwise logical OR\n\n### Description\nBitwise logical `OR`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IOR intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = OR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `J`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_or\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) OR(T, T), OR(T, F), OR(F, T), OR(F, F)\n\n  WRITE (*,*) OR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IOR\n" -} \ No newline at end of file + "keyword": "OR", + "docstr": "`OR` — Bitwise logical OR\n\n### Description\nBitwise logical `OR`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IOR intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = OR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `J`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_or\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) OR(T, T), OR(T, F), OR(F, T), OR(F, F)\n\n  WRITE (*,*) OR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IOR\n" +} diff --git a/src/docs/PACK.json b/src/docs/PACK.json index 7633cbeb..08287b2d 100644 --- a/src/docs/PACK.json +++ b/src/docs/PACK.json @@ -1,4 +1,4 @@ { - "keyword":"PACK", - "docstr":"`PACK` — Pack an array into an array of rank one\n\n### Description\nStores the elements of `ARRAY` in an array of rank one.\n\n \nThe beginning of the resulting array is made up of elements whose `MASK`\nequals `TRUE`. Afterwards, positions are filled with elements taken from\n`VECTOR`.\n\n\n\n\n### Syntax\n`RESULT = PACK(ARRAY, MASK[,VECTOR])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `MASK` | Shall be an array of type `LOGICAL` and\nof the same size as `ARRAY`. Alternatively, it may be a `LOGICAL`scalar. \n\n | `VECTOR` | (Optional) shall be an array of the same type\nas `ARRAY` and of rank one. If present, the number of elements in\n`VECTOR` shall be equal to or greater than the number of true elements\nin `MASK`. If `MASK` is scalar, the number of elements in\n`VECTOR` shall be equal to or greater than the number of elements in\n`ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is an array of rank one and the same type as that of `ARRAY`. \nIf `VECTOR` is present, the result size is that of `VECTOR`, the\nnumber of `TRUE` values in `MASK` otherwise.\n\n\n\n### Example\nGathering nonzero elements from an array:\n ```\n\n\nPROGRAM test_pack_1\n\n  INTEGER :: m(6)\n\n  m = (/ 1, 0, 0, 0, 5, 0 /)\n\n  WRITE(*, FMT=\"(6(I0, ' '))\") pack(m, m /= 0) ! \"1 5\"\n\nEND PROGRAM\n\n```\n\n \nGathering nonzero elements from an array and appending elements from `VECTOR`:\n \n
          PROGRAM test_pack_2\n            INTEGER :: m(4)\n            m = (/ 1, 0, 0, 2 /)\n            WRITE(*, FMT=\"(4(I0, ' '))\") pack(m, m /= 0, (/ 0, 0, 3, 4 /))  ! \"1 2 3 4\"\n          END PROGRAM\n
\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n" -} \ No newline at end of file + "keyword": "PACK", + "docstr": "`PACK` — Pack an array into an array of rank one\n\n### Description\nStores the elements of `ARRAY` in an array of rank one.\n\n \nThe beginning of the resulting array is made up of elements whose `MASK`\nequals `TRUE`. Afterwards, positions are filled with elements taken from\n`VECTOR`.\n\n\n\n\n### Syntax\n`RESULT = PACK(ARRAY, MASK[,VECTOR])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `MASK` | Shall be an array of type `LOGICAL` and\nof the same size as `ARRAY`. Alternatively, it may be a `LOGICAL`scalar. \n\n | `VECTOR` | (Optional) shall be an array of the same type\nas `ARRAY` and of rank one. If present, the number of elements in\n`VECTOR` shall be equal to or greater than the number of true elements\nin `MASK`. If `MASK` is scalar, the number of elements in\n`VECTOR` shall be equal to or greater than the number of elements in\n`ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is an array of rank one and the same type as that of `ARRAY`. \nIf `VECTOR` is present, the result size is that of `VECTOR`, the\nnumber of `TRUE` values in `MASK` otherwise.\n\n\n\n### Example\nGathering nonzero elements from an array:\n```\n\n\nPROGRAM test_pack_1\n\n  INTEGER :: m(6)\n\n  m = (/ 1, 0, 0, 0, 5, 0 /)\n\n  WRITE(*, FMT=\"(6(I0, ' '))\") pack(m, m /= 0) ! \"1 5\"\n\nEND PROGRAM\n\n```\n\n \nGathering nonzero elements from an array and appending elements from `VECTOR`:\n \n
          PROGRAM test_pack_2\n            INTEGER :: m(4)\n            m = (/ 1, 0, 0, 2 /)\n            WRITE(*, FMT=\"(4(I0, ' '))\") pack(m, m /= 0, (/ 0, 0, 3, 4 /))  ! \"1 2 3 4\"\n          END PROGRAM\n
\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n" +} diff --git a/src/docs/PARITY.json b/src/docs/PARITY.json index 797ebdff..b111c9d6 100644 --- a/src/docs/PARITY.json +++ b/src/docs/PARITY.json @@ -1,4 +1,4 @@ { - "keyword":"PARITY", - "docstr":"`PARITY` — Reduction with exclusive OR\n\n### Description\nCalculates the parity, i.e. the reduction using `.XOR.`,\nof `MASK` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `MASK`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `MASK`.\n\n \nIf `DIM` is absent, a scalar with the parity of all elements in\n`MASK` is returned, i.e. true if an odd number of elements is\n`.true.` and false otherwise. If `DIM` is present, an array\nof rank n-1, where n equals the rank of `ARRAY`,\nand a shape similar to that of `MASK` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_sum\n\n  LOGICAL :: x(2) = [ .true., .false. ]\n\n  print *, PARITY(x) ! prints \"T\" (true).\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "PARITY", + "docstr": "`PARITY` — Reduction with exclusive OR\n\n### Description\nCalculates the parity, i.e. the reduction using `.XOR.`,\nof `MASK` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `MASK`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `MASK`.\n\n \nIf `DIM` is absent, a scalar with the parity of all elements in\n`MASK` is returned, i.e. true if an odd number of elements is\n`.true.` and false otherwise. If `DIM` is present, an array\nof rank n-1, where n equals the rank of `ARRAY`,\nand a shape similar to that of `MASK` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n  LOGICAL :: x(2) = [ .true., .false. ]\n\n  print *, PARITY(x) ! prints \"T\" (true).\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/PERROR.json b/src/docs/PERROR.json index 8047638b..d07f48c8 100644 --- a/src/docs/PERROR.json +++ b/src/docs/PERROR.json @@ -1,4 +1,4 @@ { - "keyword":"PERROR", - "docstr":"`PERROR` — Print system error message\n\n### Description\nPrints (on the C `stderr` stream) a newline-terminated error\nmessage corresponding to the last system error. This is prefixed by\n`STRING`, a colon and a space. See `perror(3)`.\n\n\n\n### Syntax\n`CALL PERROR(STRING)`\n\n\n### Arguments\n\n \n and of the\ndefault kind.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO\n" -} \ No newline at end of file + "keyword": "PERROR", + "docstr": "`PERROR` — Print system error message\n\n### Description\nPrints (on the C `stderr` stream) a newline-terminated error\nmessage corresponding to the last system error. This is prefixed by\n`STRING`, a colon and a space. See `perror(3)`.\n\n\n\n### Syntax\n`CALL PERROR(STRING)`\n\n\n### Arguments\n\n \n and of the\ndefault kind.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO\n" +} diff --git a/src/docs/POPCNT.json b/src/docs/POPCNT.json index e2ff3c71..cfec65c0 100644 --- a/src/docs/POPCNT.json +++ b/src/docs/POPCNT.json @@ -1,4 +1,4 @@ { - "keyword":"POPCNT", - "docstr":"`POPCNT` — Number of bits set\n\n### Description\n`POPCNT(I)` returns the number of bits set ('1' bits) in the binary\nrepresentation of `I`.\n\n\n\n### Syntax\n`RESULT = POPCNT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_population\n\n  print *, popcnt(127), poppar(127)\n\n  print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n  print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPPAR, LEADZ, TRAILZ\n\n\n" -} \ No newline at end of file + "keyword": "POPCNT", + "docstr": "`POPCNT` — Number of bits set\n\n### Description\n`POPCNT(I)` returns the number of bits set ('1' bits) in the binary\nrepresentation of `I`.\n\n\n\n### Syntax\n`RESULT = POPCNT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n  print *, popcnt(127), poppar(127)\n\n  print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n  print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPPAR, LEADZ, TRAILZ\n\n\n" +} diff --git a/src/docs/POPPAR.json b/src/docs/POPPAR.json index d0fa7ded..048293d7 100644 --- a/src/docs/POPPAR.json +++ b/src/docs/POPPAR.json @@ -1,4 +1,4 @@ { - "keyword":"POPPAR", - "docstr":"`POPPAR` — Parity of the number of bits set\n\n### Description\n`POPPAR(I)` returns parity of the integer `I`, i.e. the parity\nof the number of bits set ('1' bits) in the binary representation of\n`I`. It is equal to 0 if `I` has an even number of bits set,\nand 1 for an odd number of '1' bits.\n\n\n\n### Syntax\n`RESULT = POPPAR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_population\n\n  print *, popcnt(127), poppar(127)\n\n  print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n  print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPCNT, LEADZ, TRAILZ\n\n\n" -} \ No newline at end of file + "keyword": "POPPAR", + "docstr": "`POPPAR` — Parity of the number of bits set\n\n### Description\n`POPPAR(I)` returns parity of the integer `I`, i.e. the parity\nof the number of bits set ('1' bits) in the binary representation of\n`I`. It is equal to 0 if `I` has an even number of bits set,\nand 1 for an odd number of '1' bits.\n\n\n\n### Syntax\n`RESULT = POPPAR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n  print *, popcnt(127), poppar(127)\n\n  print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n  print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPCNT, LEADZ, TRAILZ\n\n\n" +} diff --git a/src/docs/PRECISION.json b/src/docs/PRECISION.json index 502248ae..9c872f87 100644 --- a/src/docs/PRECISION.json +++ b/src/docs/PRECISION.json @@ -1,4 +1,4 @@ { - "keyword":"PRECISION", - "docstr":"`PRECISION` — Decimal precision of a real kind\n\n### Description\n`PRECISION(X)` returns the decimal precision in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = PRECISION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n\n ```\n\n\nprogram prec_and_range\n\n  real(kind=4) :: x(2)\n\n  complex(kind=8) :: y\n\n\n  print *, precision(x), range(x)\n\n  print *, precision(y), range(y)\n\nend program prec_and_range\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, RANGE\n\n\n" -} \ No newline at end of file + "keyword": "PRECISION", + "docstr": "`PRECISION` — Decimal precision of a real kind\n\n### Description\n`PRECISION(X)` returns the decimal precision in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = PRECISION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram prec_and_range\n\n  real(kind=4) :: x(2)\n\n  complex(kind=8) :: y\n\n\n  print *, precision(x), range(x)\n\n  print *, precision(y), range(y)\n\nend program prec_and_range\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, RANGE\n\n\n" +} diff --git a/src/docs/PRESENT.json b/src/docs/PRESENT.json index 77c3426d..0c368914 100644 --- a/src/docs/PRESENT.json +++ b/src/docs/PRESENT.json @@ -1,4 +1,4 @@ { - "keyword":"PRESENT", - "docstr":"`PRESENT` — Determine whether an optional dummy argument is specified\n\n### Description\nDetermines whether an optional dummy argument is present.\n\n\n\n### Syntax\n`RESULT = PRESENT(A)`\n\n\n### Arguments\n\n \n | `A` | May be of any type and may be a pointer, scalar or array\nvalue, or a dummy procedure. It shall be the name of an optional dummy argument\naccessible within the current subroutine or function.\n\n\n\n\n\n\n### Return value\nReturns either `TRUE` if the optional argument `A` is present, or\n`FALSE` otherwise.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_present\n\n  WRITE(*,*) f(), f(42) ! \"F T\"\n\nCONTAINS\n\n  LOGICAL FUNCTION f(x)\n\n    INTEGER, INTENT(IN), OPTIONAL :: x\n\n    f = PRESENT(x)\n\n  END FUNCTION\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "PRESENT", + "docstr": "`PRESENT` — Determine whether an optional dummy argument is specified\n\n### Description\nDetermines whether an optional dummy argument is present.\n\n\n\n### Syntax\n`RESULT = PRESENT(A)`\n\n\n### Arguments\n\n \n | `A` | May be of any type and may be a pointer, scalar or array\nvalue, or a dummy procedure. It shall be the name of an optional dummy argument\naccessible within the current subroutine or function.\n\n\n\n\n\n\n### Return value\nReturns either `TRUE` if the optional argument `A` is present, or\n`FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_present\n\n  WRITE(*,*) f(), f(42) ! \"F T\"\n\nCONTAINS\n\n  LOGICAL FUNCTION f(x)\n\n    INTEGER, INTENT(IN), OPTIONAL :: x\n\n    f = PRESENT(x)\n\n  END FUNCTION\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/PRODUCT.json b/src/docs/PRODUCT.json index a41e9b3b..58d5e307 100644 --- a/src/docs/PRODUCT.json +++ b/src/docs/PRODUCT.json @@ -1,4 +1,4 @@ { - "keyword":"PRODUCT", - "docstr":"`PRODUCT` — Product of array elements\n\n### Description\nMultiplies the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = PRODUCT(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the product of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_product\n\n  INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n  print *, PRODUCT(x) ! all elements, product = 120\n\n  print *, PRODUCT(x, MASK=MOD(x, 2)==1) ! odd elements, product = 15\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSUM\n" -} \ No newline at end of file + "keyword": "PRODUCT", + "docstr": "`PRODUCT` — Product of array elements\n\n### Description\nMultiplies the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = PRODUCT(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the product of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_product\n\n  INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n  print *, PRODUCT(x) ! all elements, product = 120\n\n  print *, PRODUCT(x, MASK=MOD(x, 2)==1) ! odd elements, product = 15\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSUM\n" +} diff --git a/src/docs/RADIX.json b/src/docs/RADIX.json index 8c50ce96..09f357fe 100644 --- a/src/docs/RADIX.json +++ b/src/docs/RADIX.json @@ -1,4 +1,4 @@ { - "keyword":"RADIX", - "docstr":"`RADIX` — Base of a model number\n\n### Description\n`RADIX(X)` returns the base of the model representing the entity `X`.\n\n\n\n### Syntax\n`RESULT = RADIX(X)`\n\n\n### Arguments\n\n \n\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_radix\n\n  print *, \"The radix for the default integer kind is\", radix(0)\n\n  print *, \"The radix for the default real kind is\", radix(0.0)\n\nend program test_radix\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND\n\n\n" -} \ No newline at end of file + "keyword": "RADIX", + "docstr": "`RADIX` — Base of a model number\n\n### Description\n`RADIX(X)` returns the base of the model representing the entity `X`.\n\n\n\n### Syntax\n`RESULT = RADIX(X)`\n\n\n### Arguments\n\n \n\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_radix\n\n  print *, \"The radix for the default integer kind is\", radix(0)\n\n  print *, \"The radix for the default real kind is\", radix(0.0)\n\nend program test_radix\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND\n\n\n" +} diff --git a/src/docs/RAN.json b/src/docs/RAN.json index 309fbf66..92bb59f8 100644 --- a/src/docs/RAN.json +++ b/src/docs/RAN.json @@ -1,4 +1,4 @@ { - "keyword":"RAN", - "docstr":"`RAN` — Real pseudo-random number\n\n### Description\nFor compatibility with HP FORTRAN 77/iX, the `RAN` intrinsic is\nprovided as an alias for `RAND`. See RAND for complete\ndocumentation.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nRAND, RANDOM_NUMBER\n" -} \ No newline at end of file + "keyword": "RAN", + "docstr": "`RAN` — Real pseudo-random number\n\n### Description\nFor compatibility with HP FORTRAN 77/iX, the `RAN` intrinsic is\nprovided as an alias for `RAND`. See RAND for complete\ndocumentation.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nRAND, RANDOM_NUMBER\n" +} diff --git a/src/docs/RAND.json b/src/docs/RAND.json index ea191416..430dd2af 100644 --- a/src/docs/RAND.json +++ b/src/docs/RAND.json @@ -1,4 +1,4 @@ { - "keyword":"RAND", - "docstr":"`RAND` — Real pseudo-random number\n\n### Description\n`RAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and 1. If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = RAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `REAL` type and the default kind.\n\n\n\n### Example\n\n ```\n\n\nprogram test_rand\n\n  integer,parameter :: seed = 86456\n\n\n  call srand(seed)\n\n  print *, rand(), rand(), rand(), rand()\n\n  print *, rand(seed), rand(), rand(), rand()\n\nend program test_rand\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nSRAND, RANDOM_NUMBER\n\n " -} \ No newline at end of file + "keyword": "RAND", + "docstr": "`RAND` — Real pseudo-random number\n\n### Description\n`RAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and 1. If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = RAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `REAL` type and the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_rand\n\n  integer,parameter :: seed = 86456\n\n\n  call srand(seed)\n\n  print *, rand(), rand(), rand(), rand()\n\n  print *, rand(seed), rand(), rand(), rand()\n\nend program test_rand\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nSRAND, RANDOM_NUMBER\n\n " +} diff --git a/src/docs/RANDOM_INIT.json b/src/docs/RANDOM_INIT.json index 592ec96c..9e4a0346 100644 --- a/src/docs/RANDOM_INIT.json +++ b/src/docs/RANDOM_INIT.json @@ -1,4 +1,4 @@ { - "keyword":"RANDOM_INIT", - "docstr":"`RANDOM_INIT` — Initialize a pseudo-random number generator\n\n### Description\nInitializes the state of the pseudorandom number generator used by RANDOM_NUMBER.\n### Standard\nFortran 2018\n### Class\nSubroutine\n### Syntax\nCALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)\n### Arguments\n- REPEATABLE: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is the same each time RANDOM_INIT is called from the same image. The term “same image” means a single instance of program execution. The sequence of random numbers is different for repeated execution of the program. If it is .false., the seed is set to a processor-dependent value.\n- IMAGE_DISTINCT: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is distinct from th seed set by a call to RANDOM_INIT in another image. If it is .false., the seed is set value that does depend which image called RANDOM_INIT.\n" -} \ No newline at end of file + "keyword": "RANDOM_INIT", + "docstr": "`RANDOM_INIT` — Initialize a pseudo-random number generator\n\n### Description\nInitializes the state of the pseudorandom number generator used by RANDOM_NUMBER.\n### Standard\nFortran 2018\n### Class\nSubroutine\n### Syntax\nCALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)\n### Arguments\n- REPEATABLE: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is the same each time RANDOM_INIT is called from the same image. The term “same image” means a single instance of program execution. The sequence of random numbers is different for repeated execution of the program. If it is .false., the seed is set to a processor-dependent value.\n- IMAGE_DISTINCT: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is distinct from th seed set by a call to RANDOM_INIT in another image. If it is .false., the seed is set value that does depend which image called RANDOM_INIT.\n" +} diff --git a/src/docs/RANDOM_NUMBER.json b/src/docs/RANDOM_NUMBER.json index ce4c2c2e..bf60aba0 100644 --- a/src/docs/RANDOM_NUMBER.json +++ b/src/docs/RANDOM_NUMBER.json @@ -1,4 +1,4 @@ { - "keyword":"RANDOM_NUMBER", - "docstr":"`RANDOM_NUMBER` — Pseudo-random number\n\n### Description\nReturns a single pseudorandom number or an array of pseudorandom numbers\nfrom the uniform distribution over the range 0 \\leq x < 1.\n\n \nThe runtime-library implements George Marsaglia's KISS (Keep It Simple\nStupid) random number generator (RNG). This RNG combines:\n \n
    \n
  1. The congruential generator x(n) = 69069 \\cdot x(n-1) + 1327217885\nwith a period of 2^32,\n
  2. A 3-shift shift-register generator with a period of 2^32 - 1,\n
  3. Two 16-bit multiply-with-carry generators with a period of\n597273182964842497 > 2^59.\n
\nThe overall period exceeds 2^123.\n\n \nPlease note, this RNG is thread safe if used within OpenMP directives,\ni.e., its state will be consistent while called from multiple threads. \nHowever, the KISS generator does not create random numbers in parallel\nfrom multiple sources, but in sequence from a single source. If an\nOpenMP-enabled application heavily relies on random numbers, one should\nconsider employing a dedicated parallel random number generator instead.\n\n\n\n\n### Syntax\n`RANDOM_NUMBER(HARVEST)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test_random_number\n\n  REAL :: r(5,5)\n\n  CALL init_random_seed() ! see example of RANDOM_SEED\n\n  CALL RANDOM_NUMBER(r)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_SEED\n" -} \ No newline at end of file + "keyword": "RANDOM_NUMBER", + "docstr": "`RANDOM_NUMBER` — Pseudo-random number\n\n### Description\nReturns a single pseudorandom number or an array of pseudorandom numbers\nfrom the uniform distribution over the range 0 \\leq x < 1.\n\n \nThe runtime-library implements George Marsaglia's KISS (Keep It Simple\nStupid) random number generator (RNG). This RNG combines:\n \n
    \n
  1. The congruential generator x(n) = 69069 \\cdot x(n-1) + 1327217885\nwith a period of 2^32,\n
  2. A 3-shift shift-register generator with a period of 2^32 - 1,\n
  3. Two 16-bit multiply-with-carry generators with a period of\n597273182964842497 > 2^59.\n
\nThe overall period exceeds 2^123.\n\n \nPlease note, this RNG is thread safe if used within OpenMP directives,\ni.e., its state will be consistent while called from multiple threads. \nHowever, the KISS generator does not create random numbers in parallel\nfrom multiple sources, but in sequence from a single source. If an\nOpenMP-enabled application heavily relies on random numbers, one should\nconsider employing a dedicated parallel random number generator instead.\n\n\n\n\n### Syntax\n`RANDOM_NUMBER(HARVEST)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_random_number\n\n  REAL :: r(5,5)\n\n  CALL init_random_seed() ! see example of RANDOM_SEED\n\n  CALL RANDOM_NUMBER(r)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_SEED\n" +} diff --git a/src/docs/RANDOM_SEED.json b/src/docs/RANDOM_SEED.json index 6ba5ee97..9f77f4a3 100644 --- a/src/docs/RANDOM_SEED.json +++ b/src/docs/RANDOM_SEED.json @@ -1,4 +1,4 @@ { - "keyword":"RANDOM_SEED", - "docstr":"`RANDOM_SEED` — Initialize a pseudo-random number sequence\n\n### Description\nRestarts or queries the state of the pseudorandom number generator used by\n`RANDOM_NUMBER`.\n\n \nIf `RANDOM_SEED` is called without arguments, it is initialized\nto a default state. The example below shows how to initialize the\nrandom seed with a varying seed in order to ensure a different random\nnumber sequence for each invocation of the program. Note that setting\nany of the seed values to zero should be avoided as it can result in\npoor quality random numbers being generated.\n\n\n\n\n### Syntax\n`CALL RANDOM_SEED([SIZE, PUT, GET])`\n\n\n### Arguments\n\n \n | `SIZE` | (Optional) Shall be a scalar and of type default\n`INTEGER`, with `INTENT(OUT)`. It specifies the minimum size\nof the arrays used with the `PUT` and `GET` arguments. \n\n | `PUT` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(IN)` and the size of\nthe array must be larger than or equal to the number returned by the\n`SIZE` argument. \n\n | `GET` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(OUT)` and the size\nof the array must be larger than or equal to the number returned by\nthe `SIZE` argument.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nsubroutine init_random_seed()\n\n  use iso_fortran_env, only: int64\n\n  implicit none\n\n  integer, allocatable :: seed(:)\n\n  integer :: i, n, un, istat, dt(8), pid\n\n  integer(int64) :: t\n\n\n  call random_seed(size = n)\n\n  allocate(seed(n))\n\n  ! First try if the OS provides a random number generator\n\n  open(newunit=un, file=\"/dev/urandom\", access=\"stream\", &\n\n       form=\"unformatted\", action=\"read\", status=\"old\", iostat=istat)\n\n  if (istat == 0) then\n\n     read(un) seed\n\n     close(un)\n\n  else\n\n     ! Fallback to XOR:ing the current time and pid. The PID is\n\n     ! useful in case one launches multiple instances of the same\n\n     ! program in parallel.\n\n     call system_clock(t)\n\n     if (t == 0) then\n\n        call date_and_time(values=dt)\n\n        t = (dt(1) - 1970) * 365_int64 * 24 * 60 * 60 * 1000 &\n\n             + dt(2) * 31_int64 * 24 * 60 * 60 * 1000 &\n\n             + dt(3) * 24_int64 * 60 * 60 * 1000 &\n\n             + dt(5) * 60 * 60 * 1000 &\n\n             + dt(6) * 60 * 1000 + dt(7) * 1000 &\n\n             + dt(8)\n\n     end if\n\n     pid = getpid()\n\n     t = ieor(t, int(pid, kind(t)))\n\n     do i = 1, n\n\n        seed(i) = lcg(t)\n\n     end do\n\n  end if\n\n  call random_seed(put=seed)\n\ncontains\n\n  ! This simple PRNG might not be good enough for real work, but is\n\n  ! sufficient for seeding a better PRNG.\n\n  function lcg(s)\n\n    integer :: lcg\n\n    integer(int64) :: s\n\n    if (s == 0) then\n\n       s = 104729\n\n    else\n\n       s = mod(s, 4294967296_int64)\n\n    end if\n\n    s = mod(s * 279470273_int64, 4294967291_int64)\n\n    lcg = int(mod(s, int(huge(0), int64)), kind(0))\n\n  end function lcg\n\nend subroutine init_random_seed\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_NUMBER\n" -} \ No newline at end of file + "keyword": "RANDOM_SEED", + "docstr": "`RANDOM_SEED` — Initialize a pseudo-random number sequence\n\n### Description\nRestarts or queries the state of the pseudorandom number generator used by\n`RANDOM_NUMBER`.\n\n \nIf `RANDOM_SEED` is called without arguments, it is initialized\nto a default state. The example below shows how to initialize the\nrandom seed with a varying seed in order to ensure a different random\nnumber sequence for each invocation of the program. Note that setting\nany of the seed values to zero should be avoided as it can result in\npoor quality random numbers being generated.\n\n\n\n\n### Syntax\n`CALL RANDOM_SEED([SIZE, PUT, GET])`\n\n\n### Arguments\n\n \n | `SIZE` | (Optional) Shall be a scalar and of type default\n`INTEGER`, with `INTENT(OUT)`. It specifies the minimum size\nof the arrays used with the `PUT` and `GET` arguments. \n\n | `PUT` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(IN)` and the size of\nthe array must be larger than or equal to the number returned by the\n`SIZE` argument. \n\n | `GET` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(OUT)` and the size\nof the array must be larger than or equal to the number returned by\nthe `SIZE` argument.\n\n\n\n\n\n\n### Example\n```\n\n\nsubroutine init_random_seed()\n\n  use iso_fortran_env, only: int64\n\n  implicit none\n\n  integer, allocatable :: seed(:)\n\n  integer :: i, n, un, istat, dt(8), pid\n\n  integer(int64) :: t\n\n\n  call random_seed(size = n)\n\n  allocate(seed(n))\n\n  ! First try if the OS provides a random number generator\n\n  open(newunit=un, file=\"/dev/urandom\", access=\"stream\", &\n\n       form=\"unformatted\", action=\"read\", status=\"old\", iostat=istat)\n\n  if (istat == 0) then\n\n     read(un) seed\n\n     close(un)\n\n  else\n\n     ! Fallback to XOR:ing the current time and pid. The PID is\n\n     ! useful in case one launches multiple instances of the same\n\n     ! program in parallel.\n\n     call system_clock(t)\n\n     if (t == 0) then\n\n        call date_and_time(values=dt)\n\n        t = (dt(1) - 1970) * 365_int64 * 24 * 60 * 60 * 1000 &\n\n             + dt(2) * 31_int64 * 24 * 60 * 60 * 1000 &\n\n             + dt(3) * 24_int64 * 60 * 60 * 1000 &\n\n             + dt(5) * 60 * 60 * 1000 &\n\n             + dt(6) * 60 * 1000 + dt(7) * 1000 &\n\n             + dt(8)\n\n     end if\n\n     pid = getpid()\n\n     t = ieor(t, int(pid, kind(t)))\n\n     do i = 1, n\n\n        seed(i) = lcg(t)\n\n     end do\n\n  end if\n\n  call random_seed(put=seed)\n\ncontains\n\n  ! This simple PRNG might not be good enough for real work, but is\n\n  ! sufficient for seeding a better PRNG.\n\n  function lcg(s)\n\n    integer :: lcg\n\n    integer(int64) :: s\n\n    if (s == 0) then\n\n       s = 104729\n\n    else\n\n       s = mod(s, 4294967296_int64)\n\n    end if\n\n    s = mod(s * 279470273_int64, 4294967291_int64)\n\n    lcg = int(mod(s, int(huge(0), int64)), kind(0))\n\n  end function lcg\n\nend subroutine init_random_seed\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_NUMBER\n" +} diff --git a/src/docs/RANGE.json b/src/docs/RANGE.json index 1e939a29..b966d1b1 100644 --- a/src/docs/RANGE.json +++ b/src/docs/RANGE.json @@ -1,4 +1,4 @@ { - "keyword":"RANGE", - "docstr":"`RANGE` — Decimal exponent range\n\n### Description\n`RANGE(X)` returns the decimal exponent range in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = RANGE(X)`\n\n\n### Arguments\n\n \n\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `PRECISION` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, PRECISION\n\n\n" -} \ No newline at end of file + "keyword": "RANGE", + "docstr": "`RANGE` — Decimal exponent range\n\n### Description\n`RANGE(X)` returns the decimal exponent range in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = RANGE(X)`\n\n\n### Arguments\n\n \n\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `PRECISION` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, PRECISION\n\n\n" +} diff --git a/src/docs/RANK.json b/src/docs/RANK.json index 03051b72..aba19fff 100644 --- a/src/docs/RANK.json +++ b/src/docs/RANK.json @@ -1,4 +1,4 @@ { - "keyword":"RANK", - "docstr":"`RANK` — Rank of a data object\n\n### Description\n`RANK(A)` returns the rank of a scalar or array data object.\n\n\n\n### Syntax\n`RESULT = RANK(A)`\n\n\n### Arguments\n\n \n | `A` | can be of any type\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind. For arrays, their rank is returned; for scalars zero is returned.\n\n\n\n### Example\n\n ```\n\n\nprogram test_rank\n\n  integer :: a\n\n  real, allocatable :: b(:,:)\n\n\n  print *, rank(a), rank(b) ! Prints: 0 2\n\nend program test_rank\n\n```\n\n \n\n### Standard\nTechnical Specification (TS) 29113\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "RANK", + "docstr": "`RANK` — Rank of a data object\n\n### Description\n`RANK(A)` returns the rank of a scalar or array data object.\n\n\n\n### Syntax\n`RESULT = RANK(A)`\n\n\n### Arguments\n\n \n | `A` | can be of any type\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind. For arrays, their rank is returned; for scalars zero is returned.\n\n\n\n### Example\n```\n\n\nprogram test_rank\n\n  integer :: a\n\n  real, allocatable :: b(:,:)\n\n\n  print *, rank(a), rank(b) ! Prints: 0 2\n\nend program test_rank\n\n```\n\n \n\n### Standard\nTechnical Specification (TS) 29113\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/REAL.json b/src/docs/REAL.json index 06e4d3a6..5f67faac 100644 --- a/src/docs/REAL.json +++ b/src/docs/REAL.json @@ -1,4 +1,4 @@ { - "keyword":"REAL", - "docstr":"`REAL` — Convert to real type\n\n### Description\n`REAL(A [, KIND])` converts its argument `A` to a real type. The\n`REALPART` function is provided for compatibility with *g77*,\nand its use is strongly discouraged.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = REALPART(Z)`
\n\n\n\n\n\n### Arguments\n\n \n, or\n`COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `REAL` variable or array under\nthe following rules:\n\n
\n**(A)** `REAL(A)` is converted to a default real type if `A` is an\ninteger or real variable. \n\n**(B)** `REAL(A)` is converted to a real type with the kind type parameter\nof `A` if `A` is a complex variable. \n\n**(C)** `REAL(A, KIND)` is converted to a real type with kind type\nparameter `KIND` if `A` is a complex, integer, or real\nvariable. \n\n
\n\n\n\n### Example\n\n ```\n\n\nprogram test_real\n\n  complex :: x = (1.0, 2.0)\n\n  print *, real(x), real(x,8), realpart(x)\n\nend program test_real\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `FLOAT(A)` | `INTEGER(4)` | `REAL(4)` | Fortran 77 and later\n\n | `DFLOAT(A)` | `INTEGER(4)` | `REAL(8)` | GNU extension\n\n | `SNGL(A)` | `INTEGER(8)` | `REAL(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDBLE\n\n " -} \ No newline at end of file + "keyword": "REAL", + "docstr": "`REAL` — Convert to real type\n\n### Description\n`REAL(A [, KIND])` converts its argument `A` to a real type. The\n`REALPART` function is provided for compatibility with *g77*,\nand its use is strongly discouraged.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = REALPART(Z)`
\n\n\n\n\n\n### Arguments\n\n \n, or\n`COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `REAL` variable or array under\nthe following rules:\n\n
\n**(A)** `REAL(A)` is converted to a default real type if `A` is an\ninteger or real variable. \n\n**(B)** `REAL(A)` is converted to a real type with the kind type parameter\nof `A` if `A` is a complex variable. \n\n**(C)** `REAL(A, KIND)` is converted to a real type with kind type\nparameter `KIND` if `A` is a complex, integer, or real\nvariable. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_real\n\n  complex :: x = (1.0, 2.0)\n\n  print *, real(x), real(x,8), realpart(x)\n\nend program test_real\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `FLOAT(A)` | `INTEGER(4)` | `REAL(4)` | Fortran 77 and later\n\n | `DFLOAT(A)` | `INTEGER(4)` | `REAL(8)` | GNU extension\n\n | `SNGL(A)` | `INTEGER(8)` | `REAL(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDBLE\n\n " +} diff --git a/src/docs/RENAME.json b/src/docs/RENAME.json index e4d6aca7..7084f1da 100644 --- a/src/docs/RENAME.json +++ b/src/docs/RENAME.json @@ -1,4 +1,4 @@ { - "keyword":"RENAME", - "docstr":"`RENAME` — Rename a file\n\n### Description\nRenames a file from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`rename(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = RENAME(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK\n\n " -} \ No newline at end of file + "keyword": "RENAME", + "docstr": "`RENAME` — Rename a file\n\n### Description\nRenames a file from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`rename(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = RENAME(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK\n\n " +} diff --git a/src/docs/REPEAT.json b/src/docs/REPEAT.json index 5a574520..07f6291f 100644 --- a/src/docs/REPEAT.json +++ b/src/docs/REPEAT.json @@ -1,4 +1,4 @@ { - "keyword":"REPEAT", - "docstr":"`REPEAT` — Repeated string concatenation\n\n### Description\nConcatenates `NCOPIES` copies of a string.\n\n\n\n### Syntax\n`RESULT = REPEAT(STRING, NCOPIES)`\n\n\n### Arguments\n\n \n. \n\n | `NCOPIES` | Shall be scalar and of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nA new scalar of type `CHARACTER` built up from `NCOPIES` copies\nof `STRING`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_repeat\n\n  write(*,*) repeat(\"x\", 5) ! \"xxxxx\"\n\nend program\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "REPEAT", + "docstr": "`REPEAT` — Repeated string concatenation\n\n### Description\nConcatenates `NCOPIES` copies of a string.\n\n\n\n### Syntax\n`RESULT = REPEAT(STRING, NCOPIES)`\n\n\n### Arguments\n\n \n. \n\n | `NCOPIES` | Shall be scalar and of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nA new scalar of type `CHARACTER` built up from `NCOPIES` copies\nof `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_repeat\n\n  write(*,*) repeat(\"x\", 5) ! \"xxxxx\"\n\nend program\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/RESHAPE.json b/src/docs/RESHAPE.json index 9e05ea53..6b217cd6 100644 --- a/src/docs/RESHAPE.json +++ b/src/docs/RESHAPE.json @@ -1,4 +1,4 @@ { - "keyword":"RESHAPE", - "docstr":"`RESHAPE` — Function to reshape an array\n\n### Description\nReshapes `SOURCE` to correspond to `SHAPE`. If necessary,\nthe new array may be padded with elements from `PAD` or permuted\nas defined by `ORDER`.\n\n\n\n### Syntax\n`RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array of any type. \n\n | `SHAPE` | Shall be of type `INTEGER` and an\narray of rank one. Its values must be positive or zero. \n\n | `PAD` | (Optional) shall be an array of the same\ntype as `SOURCE`. \n\n | `ORDER` | (Optional) shall be of type `INTEGER`and an array of the same shape as `SHAPE`. Its values shall\nbe a permutation of the numbers from 1 to n, where n is the size of\n`SHAPE`. If `ORDER` is absent, the natural ordering shall\nbe assumed.\n\n\n\n\n\n\n### Return value\nThe result is an array of shape `SHAPE` with the same type as\n`SOURCE`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_reshape\n\n  INTEGER, DIMENSION(4) :: x\n\n  WRITE(*,*) SHAPE(x) ! prints \"4\"\n\n  WRITE(*,*) SHAPE(RESHAPE(x, (/2, 2/))) ! prints \"2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSHAPE\n" -} \ No newline at end of file + "keyword": "RESHAPE", + "docstr": "`RESHAPE` — Function to reshape an array\n\n### Description\nReshapes `SOURCE` to correspond to `SHAPE`. If necessary,\nthe new array may be padded with elements from `PAD` or permuted\nas defined by `ORDER`.\n\n\n\n### Syntax\n`RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array of any type. \n\n | `SHAPE` | Shall be of type `INTEGER` and an\narray of rank one. Its values must be positive or zero. \n\n | `PAD` | (Optional) shall be an array of the same\ntype as `SOURCE`. \n\n | `ORDER` | (Optional) shall be of type `INTEGER`and an array of the same shape as `SHAPE`. Its values shall\nbe a permutation of the numbers from 1 to n, where n is the size of\n`SHAPE`. If `ORDER` is absent, the natural ordering shall\nbe assumed.\n\n\n\n\n\n\n### Return value\nThe result is an array of shape `SHAPE` with the same type as\n`SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_reshape\n\n  INTEGER, DIMENSION(4) :: x\n\n  WRITE(*,*) SHAPE(x) ! prints \"4\"\n\n  WRITE(*,*) SHAPE(RESHAPE(x, (/2, 2/))) ! prints \"2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSHAPE\n" +} diff --git a/src/docs/RRSPACING.json b/src/docs/RRSPACING.json index 1f29d299..e90a2d90 100644 --- a/src/docs/RRSPACING.json +++ b/src/docs/RRSPACING.json @@ -1,4 +1,4 @@ { - "keyword":"RRSPACING", - "docstr":"`RRSPACING` — Reciprocal of the relative spacing\n\n### Description\n`RRSPACING(X)` returns the reciprocal of the relative spacing of\nmodel numbers near `X`.\n\n\n\n### Syntax\n`RESULT = RRSPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe value returned is equal to\n`ABS(FRACTION(X)) * FLOAT(RADIX(X))**DIGITS(X)`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSPACING\n" -} \ No newline at end of file + "keyword": "RRSPACING", + "docstr": "`RRSPACING` — Reciprocal of the relative spacing\n\n### Description\n`RRSPACING(X)` returns the reciprocal of the relative spacing of\nmodel numbers near `X`.\n\n\n\n### Syntax\n`RESULT = RRSPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe value returned is equal to\n`ABS(FRACTION(X)) * FLOAT(RADIX(X))**DIGITS(X)`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSPACING\n" +} diff --git a/src/docs/RSHIFT.json b/src/docs/RSHIFT.json index 80245c09..3674d067 100644 --- a/src/docs/RSHIFT.json +++ b/src/docs/RSHIFT.json @@ -1,4 +1,4 @@ { - "keyword":"RSHIFT", - "docstr":"`RSHIFT` — Right shift bits\n\n### Description\n`RSHIFT` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n \nThis function has been superseded by the `SHIFTA` intrinsic, which\nis standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = RSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, LSHIFT, SHIFTA, SHIFTR,\nSHIFTL\n\n " -} \ No newline at end of file + "keyword": "RSHIFT", + "docstr": "`RSHIFT` — Right shift bits\n\n### Description\n`RSHIFT` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n \nThis function has been superseded by the `SHIFTA` intrinsic, which\nis standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = RSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, LSHIFT, SHIFTA, SHIFTR,\nSHIFTL\n\n " +} diff --git a/src/docs/SAME_TYPE_AS.json b/src/docs/SAME_TYPE_AS.json index 99b61c67..2f681dd5 100644 --- a/src/docs/SAME_TYPE_AS.json +++ b/src/docs/SAME_TYPE_AS.json @@ -1,4 +1,4 @@ { - "keyword":"SAME_TYPE_AS", - "docstr":"`SAME_TYPE_AS` — Query dynamic types for equality\n\n### Description\nQuery dynamic types for equality.\n\n\n\n### Syntax\n`RESULT = SAME_TYPE_AS(A, B)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `B` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and\nonly if the dynamic type of A is the same as the dynamic type of B.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nEXTENDS_TYPE_OF\n\n " -} \ No newline at end of file + "keyword": "SAME_TYPE_AS", + "docstr": "`SAME_TYPE_AS` — Query dynamic types for equality\n\n### Description\nQuery dynamic types for equality.\n\n\n\n### Syntax\n`RESULT = SAME_TYPE_AS(A, B)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `B` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and\nonly if the dynamic type of A is the same as the dynamic type of B.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nEXTENDS_TYPE_OF\n\n " +} diff --git a/src/docs/SCALE.json b/src/docs/SCALE.json index a812a5a3..89893829 100644 --- a/src/docs/SCALE.json +++ b/src/docs/SCALE.json @@ -1,4 +1,4 @@ { - "keyword":"SCALE", - "docstr":"`SCALE` — Scale a real value\n\n### Description\n`SCALE(X,I)` returns `X * RADIX(X)**I`.\n\n\n\n### Syntax\n`RESULT = SCALE(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | The type of the argument shall be a `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIts value is `X * RADIX(X)**I`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_scale\n\n  real :: x = 178.1387e-4\n\n  integer :: i = 5\n\n  print *, scale(x,i), x*radix(x)**i\n\nend program test_scale\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "SCALE", + "docstr": "`SCALE` — Scale a real value\n\n### Description\n`SCALE(X,I)` returns `X * RADIX(X)**I`.\n\n\n\n### Syntax\n`RESULT = SCALE(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | The type of the argument shall be a `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIts value is `X * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nprogram test_scale\n\n  real :: x = 178.1387e-4\n\n  integer :: i = 5\n\n  print *, scale(x,i), x*radix(x)**i\n\nend program test_scale\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/SCAN.json b/src/docs/SCAN.json index 4bff5404..f3bf2ae3 100644 --- a/src/docs/SCAN.json +++ b/src/docs/SCAN.json @@ -1,4 +1,4 @@ { - "keyword":"SCAN", - "docstr":"`SCAN` — Scan a string for the presence of a set of characters\n\n### Description\nScans a `STRING` for any of the characters in a `SET`\nof characters.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nin `SET`. If `BACK` equals `TRUE`, the rightmost position\nis returned. If no character of `SET` is found in `STRING`, the\nresult is zero.\n\n\n\n\n### Syntax\n`RESULT = SCAN(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_scan\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"AO\") ! 2, found 'O'\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"AO\", .TRUE.) ! 6, found 'A'\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"C++\") ! 0, found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, VERIFY\n" -} \ No newline at end of file + "keyword": "SCAN", + "docstr": "`SCAN` — Scan a string for the presence of a set of characters\n\n### Description\nScans a `STRING` for any of the characters in a `SET`\nof characters.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nin `SET`. If `BACK` equals `TRUE`, the rightmost position\nis returned. If no character of `SET` is found in `STRING`, the\nresult is zero.\n\n\n\n\n### Syntax\n`RESULT = SCAN(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_scan\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"AO\") ! 2, found 'O'\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"AO\", .TRUE.) ! 6, found 'A'\n\n  WRITE(*,*) SCAN(\"FORTRAN\", \"C++\") ! 0, found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, VERIFY\n" +} diff --git a/src/docs/SECNDS.json b/src/docs/SECNDS.json index 45369ef4..a4514e58 100644 --- a/src/docs/SECNDS.json +++ b/src/docs/SECNDS.json @@ -1,4 +1,4 @@ { - "keyword":"SECNDS", - "docstr":"`SECNDS` — Time function\n\n### Description\n`SECNDS(X)` gets the time in seconds from the real-time system clock. \n`X` is a reference time, also in seconds. If this is zero, the time in\nseconds from midnight is returned. This function is non-standard and its\nuse is discouraged.\n\n\n\n### Syntax\n`RESULT = SECNDS (X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | Shall be of type `REAL(4)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n\n ```\n\n\nprogram test_secnds\n\n    integer :: i\n\n    real(4) :: t1, t2\n\n    print *, secnds (0.0) ! seconds since midnight\n\n    t1 = secnds (0.0) ! reference time\n\n    do i = 1, 10000000 ! do something\n\n    end do\n\n    t2 = secnds (t1) ! elapsed time\n\n    print *, \"Something took \", t2, \" seconds.\"\n\nend program test_secnds\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" -} \ No newline at end of file + "keyword": "SECNDS", + "docstr": "`SECNDS` — Time function\n\n### Description\n`SECNDS(X)` gets the time in seconds from the real-time system clock. \n`X` is a reference time, also in seconds. If this is zero, the time in\nseconds from midnight is returned. This function is non-standard and its\nuse is discouraged.\n\n\n\n### Syntax\n`RESULT = SECNDS (X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | Shall be of type `REAL(4)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_secnds\n\n    integer :: i\n\n    real(4) :: t1, t2\n\n    print *, secnds (0.0) ! seconds since midnight\n\n    t1 = secnds (0.0) ! reference time\n\n    do i = 1, 10000000 ! do something\n\n    end do\n\n    t2 = secnds (t1) ! elapsed time\n\n    print *, \"Something took \", t2, \" seconds.\"\n\nend program test_secnds\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n" +} diff --git a/src/docs/SECOND.json b/src/docs/SECOND.json index dddd5f90..74009dfe 100644 --- a/src/docs/SECOND.json +++ b/src/docs/SECOND.json @@ -1,4 +1,4 @@ { - "keyword":"SECOND", - "docstr":"`SECOND` — CPU time function\n\n### Description\nReturns a `REAL(4)` value representing the elapsed CPU time in\nseconds. This provides the same functionality as the standard\n`CPU_TIME` intrinsic, and is only included for backwards\ncompatibility.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `TIME = SECOND()`
\n\n\n\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nIn either syntax, `TIME` is set to the process's current runtime in\nseconds.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " -} \ No newline at end of file + "keyword": "SECOND", + "docstr": "`SECOND` — CPU time function\n\n### Description\nReturns a `REAL(4)` value representing the elapsed CPU time in\nseconds. This provides the same functionality as the standard\n`CPU_TIME` intrinsic, and is only included for backwards\ncompatibility.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `TIME = SECOND()`
\n\n\n\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nIn either syntax, `TIME` is set to the process's current runtime in\nseconds.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n " +} diff --git a/src/docs/SELECTED_CHAR_KIND.json b/src/docs/SELECTED_CHAR_KIND.json index 03916f86..d6e47064 100644 --- a/src/docs/SELECTED_CHAR_KIND.json +++ b/src/docs/SELECTED_CHAR_KIND.json @@ -1,4 +1,4 @@ { - "keyword":"SELECTED_CHAR_KIND", - "docstr":"`SELECTED_CHAR_KIND` — Choose character kind\n\n### Description\n\n`SELECTED_CHAR_KIND(NAME)` returns the kind value for the character\nset named `NAME`, if a character set with such a name is supported,\nor -1 otherwise. Currently, supported character sets include\n“ASCII” and “DEFAULT”, which are equivalent, and “ISO_10646”\n(Universal Character Set, UCS-4) which is commonly known as Unicode.\n\n\n\n### Syntax\n`RESULT = SELECTED_CHAR_KIND(NAME)`\n\n\n### Arguments\n\n \n | `NAME` | Shall be a scalar and of the default character type.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram character_kind\n\n  use iso_fortran_env\n\n  implicit none\n\n  integer, parameter :: ascii = selected_char_kind (\"ascii\")\n\n  integer, parameter :: ucs4 = selected_char_kind ('ISO_10646')\n\n\n  character(kind=ascii, len=26) :: alphabet\n\n  character(kind=ucs4, len=30) :: hello_world\n\n\n  alphabet = ascii_\"abcdefghijklmnopqrstuvwxyz\"\n\n  hello_world = ucs4_'Hello World and Ni Hao -- ' &\n\n                // char (int (z'4F60'), ucs4) &\n\n                // char (int (z'597D'), ucs4)\n\n\n  write (*,*) alphabet\n\n\n  open (output_unit, encoding='UTF-8')\n\n  write (*,*) trim (hello_world)\n\nend program character_kind\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "SELECTED_CHAR_KIND", + "docstr": "`SELECTED_CHAR_KIND` — Choose character kind\n\n### Description\n\n`SELECTED_CHAR_KIND(NAME)` returns the kind value for the character\nset named `NAME`, if a character set with such a name is supported,\nor -1 otherwise. Currently, supported character sets include\n“ASCII” and “DEFAULT”, which are equivalent, and “ISO_10646”\n(Universal Character Set, UCS-4) which is commonly known as Unicode.\n\n\n\n### Syntax\n`RESULT = SELECTED_CHAR_KIND(NAME)`\n\n\n### Arguments\n\n \n | `NAME` | Shall be a scalar and of the default character type.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram character_kind\n\n  use iso_fortran_env\n\n  implicit none\n\n  integer, parameter :: ascii = selected_char_kind (\"ascii\")\n\n  integer, parameter :: ucs4 = selected_char_kind ('ISO_10646')\n\n\n  character(kind=ascii, len=26) :: alphabet\n\n  character(kind=ucs4, len=30) :: hello_world\n\n\n  alphabet = ascii_\"abcdefghijklmnopqrstuvwxyz\"\n\n  hello_world = ucs4_'Hello World and Ni Hao -- ' &\n\n                // char (int (z'4F60'), ucs4) &\n\n                // char (int (z'597D'), ucs4)\n\n\n  write (*,*) alphabet\n\n\n  open (output_unit, encoding='UTF-8')\n\n  write (*,*) trim (hello_world)\n\nend program character_kind\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/SELECTED_INT_KIND.json b/src/docs/SELECTED_INT_KIND.json index 9b27d5ba..a312fbf1 100644 --- a/src/docs/SELECTED_INT_KIND.json +++ b/src/docs/SELECTED_INT_KIND.json @@ -1,4 +1,4 @@ { - "keyword":"SELECTED_INT_KIND", - "docstr":"`SELECTED_INT_KIND` — Choose integer kind\n\n### Description\n`SELECTED_INT_KIND(R)` return the kind value of the smallest integer\ntype that can represent all values ranging from -10^R (exclusive)\nto 10^R (exclusive). If there is no integer kind that accommodates\nthis range, `SELECTED_INT_KIND` returns -1.\n\n\n\n### Syntax\n`RESULT = SELECTED_INT_KIND(R)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram large_integers\n\n  integer,parameter :: k5 = selected_int_kind(5)\n\n  integer,parameter :: k15 = selected_int_kind(15)\n\n  integer(kind=k5) :: i5\n\n  integer(kind=k15) :: i15\n\n\n  print *, huge(i5), huge(i15)\n\n\n  ! The following inequalities are always true\n\n  print *, huge(i5) >= 10_k5**5-1\n\n  print *, huge(i15) >= 10_k15**15-1\n\nend program large_integers\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "SELECTED_INT_KIND", + "docstr": "`SELECTED_INT_KIND` — Choose integer kind\n\n### Description\n`SELECTED_INT_KIND(R)` return the kind value of the smallest integer\ntype that can represent all values ranging from -10^R (exclusive)\nto 10^R (exclusive). If there is no integer kind that accommodates\nthis range, `SELECTED_INT_KIND` returns -1.\n\n\n\n### Syntax\n`RESULT = SELECTED_INT_KIND(R)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram large_integers\n\n  integer,parameter :: k5 = selected_int_kind(5)\n\n  integer,parameter :: k15 = selected_int_kind(15)\n\n  integer(kind=k5) :: i5\n\n  integer(kind=k15) :: i15\n\n\n  print *, huge(i5), huge(i15)\n\n\n  ! The following inequalities are always true\n\n  print *, huge(i5) >= 10_k5**5-1\n\n  print *, huge(i15) >= 10_k15**15-1\n\nend program large_integers\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/SELECTED_REAL_KIND.json b/src/docs/SELECTED_REAL_KIND.json index 5178d7a4..69173613 100644 --- a/src/docs/SELECTED_REAL_KIND.json +++ b/src/docs/SELECTED_REAL_KIND.json @@ -1,4 +1,4 @@ { - "keyword":"SELECTED_REAL_KIND", - "docstr":"`SELECTED_REAL_KIND` — Choose real kind\n\n### Description\n`SELECTED_REAL_KIND(P,R)` returns the kind value of a real data type\nwith decimal precision of at least `P` digits, exponent range of\nat least `R`, and with a radix of `RADIX`.\n\n\n\n### Syntax\n`RESULT = SELECTED_REAL_KIND([P, R, RADIX])`\n\n\n### Arguments\n\n \n. \n\n | `R` | (Optional) shall be a scalar and of type `INTEGER`. \n\n | `RADIX` | (Optional) shall be a scalar and of type `INTEGER`.\n\n\nBefore Fortran 2008, at least one of the arguments `R` or `P` shall\nbe present; since Fortran 2008, they are assumed to be zero if absent.\n\n\n\n\n### Return value\n\n`SELECTED_REAL_KIND` returns the value of the kind type parameter of\na real data type with decimal precision of at least `P` digits, a\ndecimal exponent range of at least `R`, and with the requested\n`RADIX`. If the `RADIX` parameter is absent, real kinds with\nany radix can be returned. If more than one real data type meet the\ncriteria, the kind of the data type with the smallest decimal precision\nis returned. If no real data type matches the criteria, the result is\n
\n**-1 if the processor does not support a real data type with a** precision greater than or equal to `P`, but the `R` and\n`RADIX` requirements can be fulfilled\n\n**-2 if the processor does not support a real type with an exponent** range greater than or equal to `R`, but `P` and `RADIX`are fulfillable\n\n**-3 if `RADIX` but not `P` and `R` requirements** are fulfillable\n\n**-4 if `RADIX` and either `P` or `R` requirements** are fulfillable\n\n
-5 if there is no real type with the given `RADIX`
\n\n\n\n### Example\n\n ```\n\n\nprogram real_kinds\n\n  integer,parameter :: p6 = selected_real_kind(6)\n\n  integer,parameter :: p10r100 = selected_real_kind(10,100)\n\n  integer,parameter :: r400 = selected_real_kind(r=400)\n\n  real(kind=p6) :: x\n\n  real(kind=p10r100) :: y\n\n  real(kind=r400) :: z\n\n\n  print *, precision(x), range(x)\n\n  print *, precision(y), range(y)\n\n  print *, precision(z), range(z)\n\nend program real_kinds\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `RADIX` Fortran 2008 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRECISION, RANGE, RADIX\n\n\n" -} \ No newline at end of file + "keyword": "SELECTED_REAL_KIND", + "docstr": "`SELECTED_REAL_KIND` — Choose real kind\n\n### Description\n`SELECTED_REAL_KIND(P,R)` returns the kind value of a real data type\nwith decimal precision of at least `P` digits, exponent range of\nat least `R`, and with a radix of `RADIX`.\n\n\n\n### Syntax\n`RESULT = SELECTED_REAL_KIND([P, R, RADIX])`\n\n\n### Arguments\n\n \n. \n\n | `R` | (Optional) shall be a scalar and of type `INTEGER`. \n\n | `RADIX` | (Optional) shall be a scalar and of type `INTEGER`.\n\n\nBefore Fortran 2008, at least one of the arguments `R` or `P` shall\nbe present; since Fortran 2008, they are assumed to be zero if absent.\n\n\n\n\n### Return value\n\n`SELECTED_REAL_KIND` returns the value of the kind type parameter of\na real data type with decimal precision of at least `P` digits, a\ndecimal exponent range of at least `R`, and with the requested\n`RADIX`. If the `RADIX` parameter is absent, real kinds with\nany radix can be returned. If more than one real data type meet the\ncriteria, the kind of the data type with the smallest decimal precision\nis returned. If no real data type matches the criteria, the result is\n
\n**-1 if the processor does not support a real data type with a** precision greater than or equal to `P`, but the `R` and\n`RADIX` requirements can be fulfilled\n\n**-2 if the processor does not support a real type with an exponent** range greater than or equal to `R`, but `P` and `RADIX`are fulfillable\n\n**-3 if `RADIX` but not `P` and `R` requirements** are fulfillable\n\n**-4 if `RADIX` and either `P` or `R` requirements** are fulfillable\n\n
-5 if there is no real type with the given `RADIX`
\n\n\n\n### Example\n```\n\n\nprogram real_kinds\n\n  integer,parameter :: p6 = selected_real_kind(6)\n\n  integer,parameter :: p10r100 = selected_real_kind(10,100)\n\n  integer,parameter :: r400 = selected_real_kind(r=400)\n\n  real(kind=p6) :: x\n\n  real(kind=p10r100) :: y\n\n  real(kind=r400) :: z\n\n\n  print *, precision(x), range(x)\n\n  print *, precision(y), range(y)\n\n  print *, precision(z), range(z)\n\nend program real_kinds\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `RADIX` Fortran 2008 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRECISION, RANGE, RADIX\n\n\n" +} diff --git a/src/docs/SET_EXPONENT.json b/src/docs/SET_EXPONENT.json index 06b4458c..fef7bd7e 100644 --- a/src/docs/SET_EXPONENT.json +++ b/src/docs/SET_EXPONENT.json @@ -1,4 +1,4 @@ { - "keyword":"SET_EXPONENT", - "docstr":"`SET_EXPONENT` — Set the exponent of the model\n\n### Description\n`SET_EXPONENT(X, I)` returns the real number whose fractional part\nis that that of `X` and whose exponent part is `I`.\n\n\n\n### Syntax\n`RESULT = SET_EXPONENT(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | Shall be of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real number whose fractional part\nis that that of `X` and whose exponent part if `I` is returned;\nit is `FRACTION(X) * RADIX(X)**I`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_setexp\n\n  REAL :: x = 178.1387e-4\n\n  INTEGER :: i = 17\n\n  PRINT *, SET_EXPONENT(x, i), FRACTION(x) * RADIX(x)**i\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "SET_EXPONENT", + "docstr": "`SET_EXPONENT` — Set the exponent of the model\n\n### Description\n`SET_EXPONENT(X, I)` returns the real number whose fractional part\nis that that of `X` and whose exponent part is `I`.\n\n\n\n### Syntax\n`RESULT = SET_EXPONENT(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | Shall be of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real number whose fractional part\nis that that of `X` and whose exponent part if `I` is returned;\nit is `FRACTION(X) * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_setexp\n\n  REAL :: x = 178.1387e-4\n\n  INTEGER :: i = 17\n\n  PRINT *, SET_EXPONENT(x, i), FRACTION(x) * RADIX(x)**i\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/SHAPE.json b/src/docs/SHAPE.json index 923d37cc..8be65f82 100644 --- a/src/docs/SHAPE.json +++ b/src/docs/SHAPE.json @@ -1,4 +1,4 @@ { - "keyword":"SHAPE", - "docstr":"`SHAPE` — Determine the shape of an array\n\n### Description\nDetermines the shape of an array.\n\n\n\n### Syntax\n`RESULT = SHAPE(SOURCE [, KIND])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array or scalar of any type. \nIf `SOURCE` is a pointer it must be associated and allocatable\narrays must be allocated. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nAn `INTEGER` array of rank one with as many elements as `SOURCE`\nhas dimensions. The elements of the resulting array correspond to the extend\nof `SOURCE` along the respective dimensions. If `SOURCE` is a scalar,\nthe result is the rank one array of size zero. If `KIND` is absent, the\nreturn value has the default integer kind otherwise the specified kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_shape\n\n  INTEGER, DIMENSION(-1:1, -1:2) :: A\n\n  WRITE(*,*) SHAPE(A) ! (/ 3, 4 /)\n\n  WRITE(*,*) SIZE(SHAPE(42)) ! (/ /)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nRESHAPE, SIZE\n" -} \ No newline at end of file + "keyword": "SHAPE", + "docstr": "`SHAPE` — Determine the shape of an array\n\n### Description\nDetermines the shape of an array.\n\n\n\n### Syntax\n`RESULT = SHAPE(SOURCE [, KIND])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array or scalar of any type. \nIf `SOURCE` is a pointer it must be associated and allocatable\narrays must be allocated. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nAn `INTEGER` array of rank one with as many elements as `SOURCE`\nhas dimensions. The elements of the resulting array correspond to the extend\nof `SOURCE` along the respective dimensions. If `SOURCE` is a scalar,\nthe result is the rank one array of size zero. If `KIND` is absent, the\nreturn value has the default integer kind otherwise the specified kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_shape\n\n  INTEGER, DIMENSION(-1:1, -1:2) :: A\n\n  WRITE(*,*) SHAPE(A) ! (/ 3, 4 /)\n\n  WRITE(*,*) SIZE(SHAPE(42)) ! (/ /)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nRESHAPE, SIZE\n" +} diff --git a/src/docs/SHIFTA.json b/src/docs/SHIFTA.json index 77825c2a..6a5acd1a 100644 --- a/src/docs/SHIFTA.json +++ b/src/docs/SHIFTA.json @@ -1,4 +1,4 @@ { - "keyword":"SHIFTA", - "docstr":"`SHIFTA` — Right shift with fill\n\n### Description\n`SHIFTA` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n\n\n### Syntax\n`RESULT = SHIFTA(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTL, SHIFTR\n" -} \ No newline at end of file + "keyword": "SHIFTA", + "docstr": "`SHIFTA` — Right shift with fill\n\n### Description\n`SHIFTA` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n\n\n### Syntax\n`RESULT = SHIFTA(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTL, SHIFTR\n" +} diff --git a/src/docs/SHIFTL.json b/src/docs/SHIFTL.json index fbaffe35..de0e042b 100644 --- a/src/docs/SHIFTL.json +++ b/src/docs/SHIFTL.json @@ -1,4 +1,4 @@ { - "keyword":"SHIFTL", - "docstr":"`SHIFTL` — Left shift\n\n### Description\n`SHIFTL` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost, and bits shifted in from\nthe right end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTL(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTR\n" -} \ No newline at end of file + "keyword": "SHIFTL", + "docstr": "`SHIFTL` — Left shift\n\n### Description\n`SHIFTL` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost, and bits shifted in from\nthe right end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTL(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTR\n" +} diff --git a/src/docs/SHIFTR.json b/src/docs/SHIFTR.json index baf8d8dc..055ada6b 100644 --- a/src/docs/SHIFTR.json +++ b/src/docs/SHIFTR.json @@ -1,4 +1,4 @@ { - "keyword":"SHIFTR", - "docstr":"`SHIFTR` — Right shift\n\n### Description\n`SHIFTR` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost, and bits shifted in from\nthe left end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTR(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTL\n" -} \ No newline at end of file + "keyword": "SHIFTR", + "docstr": "`SHIFTR` — Right shift\n\n### Description\n`SHIFTR` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost, and bits shifted in from\nthe left end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTR(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTL\n" +} diff --git a/src/docs/SIGN.json b/src/docs/SIGN.json index ae678a85..7bf01fd4 100644 --- a/src/docs/SIGN.json +++ b/src/docs/SIGN.json @@ -1,4 +1,4 @@ { - "keyword":"SIGN", - "docstr":"`SIGN` — Sign copying function\n\n### Description\n`SIGN(A,B)` returns the value of `A` with the sign of `B`.\n\n\n\n### Syntax\n`RESULT = SIGN(A, B)`\n\n\n### Arguments\n\n \n\n\n | `B` | Shall be of the same type and kind as `A`\n\n\n\n\n\n\n### Return value\nThe kind of the return value is that of `A` and `B`. \nIf B\\ge 0 then the result is `ABS(A)`, else\nit is `-ABS(A)`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_sign\n\n  print *, sign(-12,1)\n\n  print *, sign(-12,0)\n\n  print *, sign(-12,-1)\n\n\n  print *, sign(-12.,1.)\n\n  print *, sign(-12.,0.)\n\n  print *, sign(-12.,-1.)\n\nend program test_sign\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `SIGN(A,B)` | `REAL(4) A, B` | `REAL(4)` | f77, gnu\n\n | `ISIGN(A,B)` | `INTEGER(4) A, B` | `INTEGER(4)` | f77, gnu\n\n | `DSIGN(A,B)` | `REAL(8) A, B` | `REAL(8)` | f77, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "SIGN", + "docstr": "`SIGN` — Sign copying function\n\n### Description\n`SIGN(A,B)` returns the value of `A` with the sign of `B`.\n\n\n\n### Syntax\n`RESULT = SIGN(A, B)`\n\n\n### Arguments\n\n \n\n\n | `B` | Shall be of the same type and kind as `A`\n\n\n\n\n\n\n### Return value\nThe kind of the return value is that of `A` and `B`. \nIf B\\ge 0 then the result is `ABS(A)`, else\nit is `-ABS(A)`.\n\n\n\n### Example\n```\n\n\nprogram test_sign\n\n  print *, sign(-12,1)\n\n  print *, sign(-12,0)\n\n  print *, sign(-12,-1)\n\n\n  print *, sign(-12.,1.)\n\n  print *, sign(-12.,0.)\n\n  print *, sign(-12.,-1.)\n\nend program test_sign\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `SIGN(A,B)` | `REAL(4) A, B` | `REAL(4)` | f77, gnu\n\n | `ISIGN(A,B)` | `INTEGER(4) A, B` | `INTEGER(4)` | f77, gnu\n\n | `DSIGN(A,B)` | `REAL(8) A, B` | `REAL(8)` | f77, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/SIGNAL.json b/src/docs/SIGNAL.json index 685c8083..ac933da9 100644 --- a/src/docs/SIGNAL.json +++ b/src/docs/SIGNAL.json @@ -1,4 +1,4 @@ { - "keyword":"SIGNAL", - "docstr":"`SIGNAL` — Signal handling subroutine (or function)\n\n### Description\n`SIGNAL(NUMBER, HANDLER [, STATUS])` causes external subroutine\n`HANDLER` to be executed with a single integer argument when signal\n`NUMBER` occurs. If `HANDLER` is an integer, it can be used to\nturn off handling of signal `NUMBER` or revert to its default\naction. See `signal(2)`.\n\n \nIf `SIGNAL` is called as a subroutine and the `STATUS` argument\nis supplied, it is set to the value returned by `signal(2)`.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SIGNAL(NUMBER, HANDLER)`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. \n`INTEGER`. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\ninteger. It has `INTENT(OUT)`.\n\n\n\n\n\n\n\n### Return value\nThe `SIGNAL` function returns the value returned by `signal(2)`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_signal\n\n  intrinsic signal\n\n  external handler_print\n\n\n  call signal (12, handler_print)\n\n  call signal (10, 1)\n\n\n  call sleep (30)\n\nend program test_signal\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" -} \ No newline at end of file + "keyword": "SIGNAL", + "docstr": "`SIGNAL` — Signal handling subroutine (or function)\n\n### Description\n`SIGNAL(NUMBER, HANDLER [, STATUS])` causes external subroutine\n`HANDLER` to be executed with a single integer argument when signal\n`NUMBER` occurs. If `HANDLER` is an integer, it can be used to\nturn off handling of signal `NUMBER` or revert to its default\naction. See `signal(2)`.\n\n \nIf `SIGNAL` is called as a subroutine and the `STATUS` argument\nis supplied, it is set to the value returned by `signal(2)`.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SIGNAL(NUMBER, HANDLER)`
\n\n\n\n\n\n### Arguments\n\n \n\n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. \n`INTEGER`. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\ninteger. It has `INTENT(OUT)`.\n\n\n\n\n\n\n\n### Return value\nThe `SIGNAL` function returns the value returned by `signal(2)`.\n\n\n\n### Example\n```\n\n\nprogram test_signal\n\n  intrinsic signal\n\n  external handler_print\n\n\n  call signal (12, handler_print)\n\n  call signal (10, 1)\n\n\n  call sleep (30)\n\nend program test_signal\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" +} diff --git a/src/docs/SIN.json b/src/docs/SIN.json index cf6542cb..602e20cd 100644 --- a/src/docs/SIN.json +++ b/src/docs/SIN.json @@ -1,4 +1,4 @@ { - "keyword":"SIN", - "docstr":"`SIN` — Sine function\n\n### Description\n`SIN(X)` computes the sine of `X`.\n\n\n\n### Syntax\n`RESULT = SIN(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_sin\n\n  real :: x = 0.0\n\n  x = sin(x)\n\nend program test_sin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SIN(X)` | `REAL(4) X` | `REAL(4)` | f77, gnu\n\n | `DSIN(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CSIN(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASIN\n" -} \ No newline at end of file + "keyword": "SIN", + "docstr": "`SIN` — Sine function\n\n### Description\n`SIN(X)` computes the sine of `X`.\n\n\n\n### Syntax\n`RESULT = SIN(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sin\n\n  real :: x = 0.0\n\n  x = sin(x)\n\nend program test_sin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SIN(X)` | `REAL(4) X` | `REAL(4)` | f77, gnu\n\n | `DSIN(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CSIN(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASIN\n" +} diff --git a/src/docs/SIND.json b/src/docs/SIND.json index 37adfdec..f89745a0 100644 --- a/src/docs/SIND.json +++ b/src/docs/SIND.json @@ -1,4 +1,4 @@ { - "keyword":"SIND", - "docstr":"`SIND` — Sine function, degrees\n\n### Description\nIND(X) computes the sine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = SIND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n ### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" -} \ No newline at end of file + "keyword": "SIND", + "docstr": "`SIND` — Sine function, degrees\n\n### Description\nIND(X) computes the sine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = SIND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n ### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" +} diff --git a/src/docs/SINH.json b/src/docs/SINH.json index 39bfeeab..277dd1ba 100644 --- a/src/docs/SINH.json +++ b/src/docs/SINH.json @@ -1,4 +1,4 @@ { - "keyword":"SINH", - "docstr":"`SINH` — Hyperbolic sine function\n\n### Description\n`SINH(X)` computes the hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = SINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_sinh\n\n  real(8) :: x = - 1.0_8\n\n  x = sinh(x)\n\nend program test_sinh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SINH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSINH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 95 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASINH\n" -} \ No newline at end of file + "keyword": "SINH", + "docstr": "`SINH` — Hyperbolic sine function\n\n### Description\n`SINH(X)` computes the hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = SINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sinh\n\n  real(8) :: x = - 1.0_8\n\n  x = sinh(x)\n\nend program test_sinh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SINH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSINH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 95 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASINH\n" +} diff --git a/src/docs/SIZE.json b/src/docs/SIZE.json index 7d888bfa..42ce4aa2 100644 --- a/src/docs/SIZE.json +++ b/src/docs/SIZE.json @@ -1,4 +1,4 @@ { - "keyword":"SIZE", - "docstr":"`SIZE` — Determine the size of an array\n\n### Description\nDetermine the extent of `ARRAY` along a specified dimension `DIM`,\nor the total number of elements in `ARRAY` if `DIM` is absent.\n\n\n\n### Syntax\n`RESULT = SIZE(ARRAY[, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. If `ARRAY` is\na pointer it must be associated and allocatable arrays must be allocated. \n\n | `DIM` | (Optional) shall be a scalar of type `INTEGER`and its value shall be in the range from 1 to n, where n equals the rank\nof `ARRAY`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_size\n\n  WRITE(*,*) SIZE((/ 1, 2 /)) ! 2\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSHAPE, RESHAPE\n" -} \ No newline at end of file + "keyword": "SIZE", + "docstr": "`SIZE` — Determine the size of an array\n\n### Description\nDetermine the extent of `ARRAY` along a specified dimension `DIM`,\nor the total number of elements in `ARRAY` if `DIM` is absent.\n\n\n\n### Syntax\n`RESULT = SIZE(ARRAY[, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. If `ARRAY` is\na pointer it must be associated and allocatable arrays must be allocated. \n\n | `DIM` | (Optional) shall be a scalar of type `INTEGER`and its value shall be in the range from 1 to n, where n equals the rank\nof `ARRAY`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_size\n\n  WRITE(*,*) SIZE((/ 1, 2 /)) ! 2\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSHAPE, RESHAPE\n" +} diff --git a/src/docs/SIZEOF.json b/src/docs/SIZEOF.json index 4ceaabe1..f9557ab5 100644 --- a/src/docs/SIZEOF.json +++ b/src/docs/SIZEOF.json @@ -1,4 +1,4 @@ { - "keyword":"SIZEOF", - "docstr":"`SIZEOF` — Size in bytes of an expression\n\n### Description\n`SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be of any type, rank or shape.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components. If the argument is\npolymorphic, the size according to the dynamic type is returned. The argument\nmay not be a procedure or procedure pointer. Note that the code assumes for\narrays that those are contiguous; for contiguous arrays, it returns the\nstorage or an array element multiplied by the size of the array.\n\n\n\n### Example\n\n ```\n\n\ninteger :: i\n\nreal :: r, s(5)\n\nprint *, (sizeof(s)/sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_SIZEOF, STORAGE_SIZE\n" -} \ No newline at end of file + "keyword": "SIZEOF", + "docstr": "`SIZEOF` — Size in bytes of an expression\n\n### Description\n`SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be of any type, rank or shape.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components. If the argument is\npolymorphic, the size according to the dynamic type is returned. The argument\nmay not be a procedure or procedure pointer. Note that the code assumes for\narrays that those are contiguous; for contiguous arrays, it returns the\nstorage or an array element multiplied by the size of the array.\n\n\n\n### Example\n```\n\n\ninteger :: i\n\nreal :: r, s(5)\n\nprint *, (sizeof(s)/sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_SIZEOF, STORAGE_SIZE\n" +} diff --git a/src/docs/SLEEP.json b/src/docs/SLEEP.json index 1c4fada4..1e510692 100644 --- a/src/docs/SLEEP.json +++ b/src/docs/SLEEP.json @@ -1,4 +1,4 @@ { - "keyword":"SLEEP", - "docstr":"`SLEEP` — Sleep for the specified number of seconds\n\n### Description\nCalling this subroutine causes the process to pause for `SECONDS` seconds.\n\n\n\n### Syntax\n`CALL SLEEP(SECONDS)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nprogram test_sleep\n\n  call sleep(5)\n\nend\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" -} \ No newline at end of file + "keyword": "SLEEP", + "docstr": "`SLEEP` — Sleep for the specified number of seconds\n\n### Description\nCalling this subroutine causes the process to pause for `SECONDS` seconds.\n\n\n\n### Syntax\n`CALL SLEEP(SECONDS)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_sleep\n\n  call sleep(5)\n\nend\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n" +} diff --git a/src/docs/SPACING.json b/src/docs/SPACING.json index bbb7c45e..84fbec19 100644 --- a/src/docs/SPACING.json +++ b/src/docs/SPACING.json @@ -1,4 +1,4 @@ { - "keyword":"SPACING", - "docstr":"`SPACING` — Smallest distance between two numbers of a given type\n\n### Description\nDetermines the distance between the argument `X` and the nearest\nadjacent number of the same type.\n\n\n\n### Syntax\n`RESULT = SPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as the input argument `X`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_spacing\n\n  INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)\n\n  INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)\n\n\n  WRITE(*,*) spacing(1.0_SGL) ! \"1.1920929E-07\" on i686\n\n  WRITE(*,*) spacing(1.0_DBL) ! \"2.220446049250313E-016\" on i686\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nRRSPACING\n" -} \ No newline at end of file + "keyword": "SPACING", + "docstr": "`SPACING` — Smallest distance between two numbers of a given type\n\n### Description\nDetermines the distance between the argument `X` and the nearest\nadjacent number of the same type.\n\n\n\n### Syntax\n`RESULT = SPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as the input argument `X`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spacing\n\n  INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)\n\n  INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)\n\n\n  WRITE(*,*) spacing(1.0_SGL) ! \"1.1920929E-07\" on i686\n\n  WRITE(*,*) spacing(1.0_DBL) ! \"2.220446049250313E-016\" on i686\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nRRSPACING\n" +} diff --git a/src/docs/SPREAD.json b/src/docs/SPREAD.json index 81db1d48..eb49b232 100644 --- a/src/docs/SPREAD.json +++ b/src/docs/SPREAD.json @@ -1,4 +1,4 @@ { - "keyword":"SPREAD", - "docstr":"`SPREAD` — Add a dimension to an array\n\n### Description\nReplicates a `SOURCE` array `NCOPIES` times along a specified\ndimension `DIM`.\n\n\n\n### Syntax\n`RESULT = SPREAD(SOURCE, DIM, NCOPIES)`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type and\na rank less than seven. \n\n | `DIM` | Shall be a scalar of type `INTEGER` with a\nvalue in the range from 1 to n+1, where n equals the rank of `SOURCE`. \n\n | `NCOPIES` | Shall be a scalar of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result is an array of the same type as `SOURCE` and has rank n+1\nwhere n equals the rank of `SOURCE`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_spread\n\n  INTEGER :: a = 1, b(2) = (/ 1, 2 /)\n\n  WRITE(*,*) SPREAD(A, 1, 2) ! \"1 1\"\n\n  WRITE(*,*) SPREAD(B, 1, 2) ! \"1 1 2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n" -} \ No newline at end of file + "keyword": "SPREAD", + "docstr": "`SPREAD` — Add a dimension to an array\n\n### Description\nReplicates a `SOURCE` array `NCOPIES` times along a specified\ndimension `DIM`.\n\n\n\n### Syntax\n`RESULT = SPREAD(SOURCE, DIM, NCOPIES)`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type and\na rank less than seven. \n\n | `DIM` | Shall be a scalar of type `INTEGER` with a\nvalue in the range from 1 to n+1, where n equals the rank of `SOURCE`. \n\n | `NCOPIES` | Shall be a scalar of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result is an array of the same type as `SOURCE` and has rank n+1\nwhere n equals the rank of `SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spread\n\n  INTEGER :: a = 1, b(2) = (/ 1, 2 /)\n\n  WRITE(*,*) SPREAD(A, 1, 2) ! \"1 1\"\n\n  WRITE(*,*) SPREAD(B, 1, 2) ! \"1 1 2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n" +} diff --git a/src/docs/SQRT.json b/src/docs/SQRT.json index 48fc6fa5..a9ea3159 100644 --- a/src/docs/SQRT.json +++ b/src/docs/SQRT.json @@ -1,4 +1,4 @@ { - "keyword":"SQRT", - "docstr":"`SQRT` — Square-root function\n\n### Description\n`SQRT(X)` computes the square root of `X`.\n\n\n\n### Syntax\n`RESULT = SQRT(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_sqrt\n\n  real(8) :: x = 2.0_8\n\n  complex :: z = (1.0, 2.0)\n\n  x = sqrt(x)\n\n  z = sqrt(z)\n\nend program test_sqrt\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SQRT(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSQRT(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n | `CSQRT(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 95 and later\n\n | `ZSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" -} \ No newline at end of file + "keyword": "SQRT", + "docstr": "`SQRT` — Square-root function\n\n### Description\n`SQRT(X)` computes the square root of `X`.\n\n\n\n### Syntax\n`RESULT = SQRT(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sqrt\n\n  real(8) :: x = 2.0_8\n\n  complex :: z = (1.0, 2.0)\n\n  x = sqrt(x)\n\n  z = sqrt(z)\n\nend program test_sqrt\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SQRT(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSQRT(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n | `CSQRT(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 95 and later\n\n | `ZSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n" +} diff --git a/src/docs/SRAND.json b/src/docs/SRAND.json index d07bfc9e..d2c732c2 100644 --- a/src/docs/SRAND.json +++ b/src/docs/SRAND.json @@ -1,4 +1,4 @@ { - "keyword":"SRAND", - "docstr":"`SRAND` — Reinitialize the random number generator\n\n### Description\n`SRAND` reinitializes the pseudo-random number generator\ncalled by `RAND` and `IRAND`. The new seed used by the\ngenerator is specified by the required argument `SEED`.\n\n\n\n### Syntax\n`CALL SRAND(SEED)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\nSee `RAND` and `IRAND` for examples.\n\n\n\n### Notes\nThe Fortran standard specifies the intrinsic subroutines\n`RANDOM_SEED` to initialize the pseudo-random number\ngenerator and `RANDOM_NUMBER` to generate pseudo-random numbers. \nThese subroutines should be used in new codes.\n\n \nPlease note that in GNU Fortran, these two sets of intrinsics (`RAND`,\n`IRAND` and `SRAND` on the one hand, `RANDOM_NUMBER` and\n`RANDOM_SEED` on the other hand) access two independent\npseudo-random number generators.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRAND, RANDOM_SEED, RANDOM_NUMBER\n\n " -} \ No newline at end of file + "keyword": "SRAND", + "docstr": "`SRAND` — Reinitialize the random number generator\n\n### Description\n`SRAND` reinitializes the pseudo-random number generator\ncalled by `RAND` and `IRAND`. The new seed used by the\ngenerator is specified by the required argument `SEED`.\n\n\n\n### Syntax\n`CALL SRAND(SEED)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\nSee `RAND` and `IRAND` for examples.\n\n\n\n### Notes\nThe Fortran standard specifies the intrinsic subroutines\n`RANDOM_SEED` to initialize the pseudo-random number\ngenerator and `RANDOM_NUMBER` to generate pseudo-random numbers. \nThese subroutines should be used in new codes.\n\n \nPlease note that in GNU Fortran, these two sets of intrinsics (`RAND`,\n`IRAND` and `SRAND` on the one hand, `RANDOM_NUMBER` and\n`RANDOM_SEED` on the other hand) access two independent\npseudo-random number generators.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRAND, RANDOM_SEED, RANDOM_NUMBER\n\n " +} diff --git a/src/docs/STAT.json b/src/docs/STAT.json index 76cf637f..c48521fd 100644 --- a/src/docs/STAT.json +++ b/src/docs/STAT.json @@ -1,4 +1,4 @@ { - "keyword":"STAT", - "docstr":"`STAT` — Get file status\n\n### Description\nThis function returns information about a file. No permissions are required on\nthe file itself, but execute (search) permission is required on all of the\ndirectories in path that lead to the file.\n\n \nThe elements that are obtained and stored in the array `VALUES`:\n \n\n | Device ID\n\n | `VALUES(2)` | Inode number\n\n | `VALUES(3)` | File mode\n\n | `VALUES(4)` | Number of links\n\n | `VALUES(5)` | Owner's uid\n\n | `VALUES(6)` | Owner's gid\n\n | `VALUES(7)` | ID of device containing directory entry for file (0 if not available)\n\n | `VALUES(8)` | File size (bytes)\n\n | `VALUES(9)` | Last access time\n\n | `VALUES(10)` | Last modification time\n\n | `VALUES(11)` | Last file status change time\n\n | `VALUES(12)` | Preferred I/O block size (-1 if not available)\n\n | `VALUES(13)` | Number of blocks allocated (-1 if not available)\n\n\n\n \n\nNot all these elements are relevant on all systems. \nIf an element is not relevant, it is returned as 0.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = STAT(NAME, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n, of the\ndefault kind and a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_stat\n\n  INTEGER, DIMENSION(13) :: buff\n\n  INTEGER :: status\n\n\n  CALL STAT(\"/etc/passwd\", buff, status)\n\n\n  IF (status == 0) THEN\n\n    WRITE (*, FMT=\"('Device ID:', T30, I19)\") buff(1)\n\n    WRITE (*, FMT=\"('Inode number:', T30, I19)\") buff(2)\n\n    WRITE (*, FMT=\"('File mode (octal):', T30, O19)\") buff(3)\n\n    WRITE (*, FMT=\"('Number of links:', T30, I19)\") buff(4)\n\n    WRITE (*, FMT=\"('Owner''s uid:', T30, I19)\") buff(5)\n\n    WRITE (*, FMT=\"('Owner''s gid:', T30, I19)\") buff(6)\n\n    WRITE (*, FMT=\"('Device where located:', T30, I19)\") buff(7)\n\n    WRITE (*, FMT=\"('File size:', T30, I19)\") buff(8)\n\n    WRITE (*, FMT=\"('Last access time:', T30, A19)\") CTIME(buff(9))\n\n    WRITE (*, FMT=\"('Last modification time', T30, A19)\") CTIME(buff(10))\n\n    WRITE (*, FMT=\"('Last status change time:', T30, A19)\") CTIME(buff(11))\n\n    WRITE (*, FMT=\"('Preferred block size:', T30, I19)\") buff(12)\n\n    WRITE (*, FMT=\"('No. of blocks allocated:', T30, I19)\") buff(13)\n\n  END IF\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a link: LSTAT\n" -} \ No newline at end of file + "keyword": "STAT", + "docstr": "`STAT` — Get file status\n\n### Description\nThis function returns information about a file. No permissions are required on\nthe file itself, but execute (search) permission is required on all of the\ndirectories in path that lead to the file.\n\n \nThe elements that are obtained and stored in the array `VALUES`:\n \n\n | Device ID\n\n | `VALUES(2)` | Inode number\n\n | `VALUES(3)` | File mode\n\n | `VALUES(4)` | Number of links\n\n | `VALUES(5)` | Owner's uid\n\n | `VALUES(6)` | Owner's gid\n\n | `VALUES(7)` | ID of device containing directory entry for file (0 if not available)\n\n | `VALUES(8)` | File size (bytes)\n\n | `VALUES(9)` | Last access time\n\n | `VALUES(10)` | Last modification time\n\n | `VALUES(11)` | Last file status change time\n\n | `VALUES(12)` | Preferred I/O block size (-1 if not available)\n\n | `VALUES(13)` | Number of blocks allocated (-1 if not available)\n\n\n\n \n\nNot all these elements are relevant on all systems. \nIf an element is not relevant, it is returned as 0.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = STAT(NAME, VALUES)`
\n\n\n\n\n\n### Arguments\n\n \n, of the\ndefault kind and a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_stat\n\n  INTEGER, DIMENSION(13) :: buff\n\n  INTEGER :: status\n\n\n  CALL STAT(\"/etc/passwd\", buff, status)\n\n\n  IF (status == 0) THEN\n\n    WRITE (*, FMT=\"('Device ID:', T30, I19)\") buff(1)\n\n    WRITE (*, FMT=\"('Inode number:', T30, I19)\") buff(2)\n\n    WRITE (*, FMT=\"('File mode (octal):', T30, O19)\") buff(3)\n\n    WRITE (*, FMT=\"('Number of links:', T30, I19)\") buff(4)\n\n    WRITE (*, FMT=\"('Owner''s uid:', T30, I19)\") buff(5)\n\n    WRITE (*, FMT=\"('Owner''s gid:', T30, I19)\") buff(6)\n\n    WRITE (*, FMT=\"('Device where located:', T30, I19)\") buff(7)\n\n    WRITE (*, FMT=\"('File size:', T30, I19)\") buff(8)\n\n    WRITE (*, FMT=\"('Last access time:', T30, A19)\") CTIME(buff(9))\n\n    WRITE (*, FMT=\"('Last modification time', T30, A19)\") CTIME(buff(10))\n\n    WRITE (*, FMT=\"('Last status change time:', T30, A19)\") CTIME(buff(11))\n\n    WRITE (*, FMT=\"('Preferred block size:', T30, I19)\") buff(12)\n\n    WRITE (*, FMT=\"('No. of blocks allocated:', T30, I19)\") buff(13)\n\n  END IF\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a link: LSTAT\n" +} diff --git a/src/docs/STORAGE_SIZE.json b/src/docs/STORAGE_SIZE.json index df5e3e21..b64f74ae 100644 --- a/src/docs/STORAGE_SIZE.json +++ b/src/docs/STORAGE_SIZE.json @@ -1,4 +1,4 @@ { - "keyword":"STORAGE_SIZE", - "docstr":"`STORAGE_SIZE` — Storage size in bits\n\n### Description\nReturns the storage size of argument `A` in bits. \n\n\n### Syntax\n`RESULT = STORAGE_SIZE(A [, KIND])`\n\n\n### Arguments\n\n \n | `A` | Shall be a scalar or array of any type. \n\n | `KIND` | (Optional) shall be a scalar integer constant expression.\n\n\n\n\n\n\n### Return value\nThe result is a scalar integer with the kind type parameter specified by KIND\n(or default integer type if KIND is missing). The result value is the size\nexpressed in bits for an element of an array that has the dynamic type and type\nparameters of A.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n### Class\nInquiry function\n\n\n### See also\nC_SIZEOF, SIZEOF\n" -} \ No newline at end of file + "keyword": "STORAGE_SIZE", + "docstr": "`STORAGE_SIZE` — Storage size in bits\n\n### Description\nReturns the storage size of argument `A` in bits. \n\n\n### Syntax\n`RESULT = STORAGE_SIZE(A [, KIND])`\n\n\n### Arguments\n\n \n | `A` | Shall be a scalar or array of any type. \n\n | `KIND` | (Optional) shall be a scalar integer constant expression.\n\n\n\n\n\n\n### Return value\nThe result is a scalar integer with the kind type parameter specified by KIND\n(or default integer type if KIND is missing). The result value is the size\nexpressed in bits for an element of an array that has the dynamic type and type\nparameters of A.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n### Class\nInquiry function\n\n\n### See also\nC_SIZEOF, SIZEOF\n" +} diff --git a/src/docs/SUM.json b/src/docs/SUM.json index b9e2dbc4..5a257ead 100644 --- a/src/docs/SUM.json +++ b/src/docs/SUM.json @@ -1,4 +1,4 @@ { - "keyword":"SUM", - "docstr":"`SUM` — Sum of array elements\n\n### Description\nAdds the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = SUM(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the sum of all elements in `ARRAY`\nis returned. Otherwise, an array of rank n-1, where n equals the rank of\n`ARRAY`, and a shape similar to that of `ARRAY` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_sum\n\n  INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n  print *, SUM(x) ! all elements, sum = 15\n\n  print *, SUM(x, MASK=MOD(x, 2)==1) ! odd elements, sum = 9\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRODUCT\n" -} \ No newline at end of file + "keyword": "SUM", + "docstr": "`SUM` — Sum of array elements\n\n### Description\nAdds the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = SUM(ARRAY, DIM[, MASK])`
\n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the sum of all elements in `ARRAY`\nis returned. Otherwise, an array of rank n-1, where n equals the rank of\n`ARRAY`, and a shape similar to that of `ARRAY` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n  INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n  print *, SUM(x) ! all elements, sum = 15\n\n  print *, SUM(x, MASK=MOD(x, 2)==1) ! odd elements, sum = 9\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRODUCT\n" +} diff --git a/src/docs/SYMLNK.json b/src/docs/SYMLNK.json index 55726ade..5f4073fb 100644 --- a/src/docs/SYMLNK.json +++ b/src/docs/SYMLNK.json @@ -1,4 +1,4 @@ { - "keyword":"SYMLNK", - "docstr":"`SYMLNK` — Create a symbolic link\n\n### Description\nMakes a symbolic link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`symlink(2)`. If the system does not supply `symlink(2)`,\n`ENOSYS` is returned.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYMLNK(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, UNLINK\n\n " -} \ No newline at end of file + "keyword": "SYMLNK", + "docstr": "`SYMLNK` — Create a symbolic link\n\n### Description\nMakes a symbolic link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`symlink(2)`. If the system does not supply `symlink(2)`,\n`ENOSYS` is returned.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYMLNK(PATH1, PATH2)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, UNLINK\n\n " +} diff --git a/src/docs/SYSTEM.json b/src/docs/SYSTEM.json index 2d710511..71317240 100644 --- a/src/docs/SYSTEM.json +++ b/src/docs/SYSTEM.json @@ -1,4 +1,4 @@ { - "keyword":"SYSTEM", - "docstr":"`SYSTEM` — Execute a shell command\n\n### Description\nPasses the command `COMMAND` to a shell (see `system(3)`). If\nargument `STATUS` is present, it contains the value returned by\n`system(3)`, which is presumably 0 if the shell command succeeded. \nNote that which shell is used to invoke the command is system-dependent\nand environment-dependent.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYSTEM(COMMAND)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nEXECUTE_COMMAND_LINE, which is part of the Fortran 2008 standard\nand should considered in new code for future portability. \n" -} \ No newline at end of file + "keyword": "SYSTEM", + "docstr": "`SYSTEM` — Execute a shell command\n\n### Description\nPasses the command `COMMAND` to a shell (see `system(3)`). If\nargument `STATUS` is present, it contains the value returned by\n`system(3)`, which is presumably 0 if the shell command succeeded. \nNote that which shell is used to invoke the command is system-dependent\nand environment-dependent.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYSTEM(COMMAND)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nEXECUTE_COMMAND_LINE, which is part of the Fortran 2008 standard\nand should considered in new code for future portability. \n" +} diff --git a/src/docs/SYSTEM_CLOCK.json b/src/docs/SYSTEM_CLOCK.json index 30f88c48..8e4f6325 100644 --- a/src/docs/SYSTEM_CLOCK.json +++ b/src/docs/SYSTEM_CLOCK.json @@ -1,4 +1,4 @@ { - "keyword":"SYSTEM_CLOCK", - "docstr":"`SYSTEM_CLOCK` — Time function\n\n### Description\nDetermines the `COUNT` of a processor clock since an unspecified\ntime in the past modulo `COUNT_MAX`, `COUNT_RATE` determines\nthe number of clock ticks per second. If the platform supports a\nmonotonic clock, that clock is used and can, depending on the platform\nclock implementation, provide up to nanosecond resolution. If a\nmonotonic clock is not available, the implementation falls back to a\nrealtime clock.\n\n \n`COUNT_RATE` is system dependent and can vary depending on the kind of\nthe arguments. For `kind=4` arguments (and smaller integer kinds),\n`COUNT` represents milliseconds, while for `kind=8` arguments (and\nlarger integer kinds), `COUNT` typically represents micro- or\nnanoseconds depending on resolution of the underlying platform clock. \n`COUNT_MAX` usually equals `HUGE(COUNT_MAX)`. Note that the\nmillisecond resolution of the `kind=4` version implies that the\n`COUNT` will wrap around in roughly 25 days. In order to avoid issues\nwith the wrap around and for more precise timing, please use the\n`kind=8` version.\n\n \n\nIf there is no clock, or querying the clock fails, `COUNT` is set\nto `-HUGE(COUNT)`, and `COUNT_RATE` and `COUNT_MAX` are\nset to zero.\n\n \n\nWhen running on a platform using the GNU C library (glibc) version\n2.16 or older, or a derivative thereof, the high resolution monotonic\nclock is available only when linking with the `rt` library. This\ncan be done explicitly by adding the `-lrt` flag when linking the\napplication, but is also done implicitly when using OpenMP.\n\n \n\nOn the Windows platform, the version with `kind=4` arguments uses\nthe `GetTickCount` function, whereas the `kind=8` version\nuses `QueryPerformanceCounter` and\n`QueryPerformanceCounterFrequency`. For more information, and\npotential caveats, please see the platform documentation.\n\n\n\n\n### Syntax\n`CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])`\n\n\n### Arguments\n\n \n | `COUNT` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`. \n\n | `COUNT_RATE` | (Optional) shall be a scalar of type\n`INTEGER` or `REAL`, with `INTENT(OUT)`. \n\n | `COUNT_MAX` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_system_clock\n\n  INTEGER :: count, count_rate, count_max\n\n  CALL SYSTEM_CLOCK(count, count_rate, count_max)\n\n  WRITE(*,*) count, count_rate, count_max\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nDATE_AND_TIME, CPU_TIME\n" -} \ No newline at end of file + "keyword": "SYSTEM_CLOCK", + "docstr": "`SYSTEM_CLOCK` — Time function\n\n### Description\nDetermines the `COUNT` of a processor clock since an unspecified\ntime in the past modulo `COUNT_MAX`, `COUNT_RATE` determines\nthe number of clock ticks per second. If the platform supports a\nmonotonic clock, that clock is used and can, depending on the platform\nclock implementation, provide up to nanosecond resolution. If a\nmonotonic clock is not available, the implementation falls back to a\nrealtime clock.\n\n \n`COUNT_RATE` is system dependent and can vary depending on the kind of\nthe arguments. For `kind=4` arguments (and smaller integer kinds),\n`COUNT` represents milliseconds, while for `kind=8` arguments (and\nlarger integer kinds), `COUNT` typically represents micro- or\nnanoseconds depending on resolution of the underlying platform clock. \n`COUNT_MAX` usually equals `HUGE(COUNT_MAX)`. Note that the\nmillisecond resolution of the `kind=4` version implies that the\n`COUNT` will wrap around in roughly 25 days. In order to avoid issues\nwith the wrap around and for more precise timing, please use the\n`kind=8` version.\n\n \n\nIf there is no clock, or querying the clock fails, `COUNT` is set\nto `-HUGE(COUNT)`, and `COUNT_RATE` and `COUNT_MAX` are\nset to zero.\n\n \n\nWhen running on a platform using the GNU C library (glibc) version\n2.16 or older, or a derivative thereof, the high resolution monotonic\nclock is available only when linking with the `rt` library. This\ncan be done explicitly by adding the `-lrt` flag when linking the\napplication, but is also done implicitly when using OpenMP.\n\n \n\nOn the Windows platform, the version with `kind=4` arguments uses\nthe `GetTickCount` function, whereas the `kind=8` version\nuses `QueryPerformanceCounter` and\n`QueryPerformanceCounterFrequency`. For more information, and\npotential caveats, please see the platform documentation.\n\n\n\n\n### Syntax\n`CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])`\n\n\n### Arguments\n\n \n | `COUNT` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`. \n\n | `COUNT_RATE` | (Optional) shall be a scalar of type\n`INTEGER` or `REAL`, with `INTENT(OUT)`. \n\n | `COUNT_MAX` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_system_clock\n\n  INTEGER :: count, count_rate, count_max\n\n  CALL SYSTEM_CLOCK(count, count_rate, count_max)\n\n  WRITE(*,*) count, count_rate, count_max\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nDATE_AND_TIME, CPU_TIME\n" +} diff --git a/src/docs/TAN.json b/src/docs/TAN.json index 64ca3136..f6e3734a 100644 --- a/src/docs/TAN.json +++ b/src/docs/TAN.json @@ -1,4 +1,4 @@ { - "keyword":"TAN", - "docstr":"`TAN` — Tangent function\n\n### Description\n`TAN(X)` computes the tangent of `X`.\n\n\n\n### Syntax\n`RESULT = TAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n\n ```\n\n\nprogram test_tan\n\n  real(8) :: x = 0.165_8\n\n  x = tan(x)\n\nend program test_tan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATAN\n" -} \ No newline at end of file + "keyword": "TAN", + "docstr": "`TAN` — Tangent function\n\n### Description\n`TAN(X)` computes the tangent of `X`.\n\n\n\n### Syntax\n`RESULT = TAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_tan\n\n  real(8) :: x = 0.165_8\n\n  x = tan(x)\n\nend program test_tan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATAN\n" +} diff --git a/src/docs/TAND.json b/src/docs/TAND.json index ecf1f92c..db31ce78 100644 --- a/src/docs/TAND.json +++ b/src/docs/TAND.json @@ -1,4 +1,4 @@ { - "keyword":"TAND", - "docstr":"`TAND` — Tangent function, degrees\n\n### Description\nTAND(X) computes the tangent of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = TAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" -} \ No newline at end of file + "keyword": "TAND", + "docstr": "`TAND` — Tangent function, degrees\n\n### Description\nTAND(X) computes the tangent of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = TAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n" +} diff --git a/src/docs/TANH.json b/src/docs/TANH.json index 5ac4ebef..5f6683d2 100644 --- a/src/docs/TANH.json +++ b/src/docs/TANH.json @@ -1,4 +1,4 @@ { - "keyword":"TANH", - "docstr":"`TANH` — Hyperbolic tangent function\n\n### Description\n`TANH(X)` computes the hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`X = TANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value lies in the range\n - 1 \\leq tanh(x) \\leq 1 .\n\n\n\n### Example\n\n ```\n\n\nprogram test_tanh\n\n  real(8) :: x = 2.1_8\n\n  x = tanh(x)\n\nend program test_tanh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TANH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTANH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATANH\n" -} \ No newline at end of file + "keyword": "TANH", + "docstr": "`TANH` — Hyperbolic tangent function\n\n### Description\n`TANH(X)` computes the hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`X = TANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value lies in the range\n - 1 \\leq tanh(x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_tanh\n\n  real(8) :: x = 2.1_8\n\n  x = tanh(x)\n\nend program test_tanh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TANH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTANH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATANH\n" +} diff --git a/src/docs/THIS_IMAGE.json b/src/docs/THIS_IMAGE.json index ebe367b3..a14e4d05 100644 --- a/src/docs/THIS_IMAGE.json +++ b/src/docs/THIS_IMAGE.json @@ -1,4 +1,4 @@ { - "keyword":"THIS_IMAGE", - "docstr":"`THIS_IMAGE` — Function that returns the cosubscript index of this image\n\n### Description\nReturns the cosubscript for this image.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = THIS_IMAGE(DISTANCE)`
\n | `RESULT = THIS_IMAGE(COARRAY [, DIM])`
\n\n\n\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n(not permitted together with `COARRAY`). \n\n | `COARRAY` | Coarray of any type (optional; if `DIM`\npresent, required). \n\n | `DIM` | default integer scalar (optional). If present,\n`DIM` shall be between one and the corank of `COARRAY`.\n\n\n\n\n\n\n### Return value\nDefault integer. If `COARRAY` is not present, it is scalar; if\n`DISTANCE` is not present or has value 0, its value is the image index on\nthe invoking image for the current team, for values smaller or equal\ndistance to the initial team, it returns the image index on the ancestor team\nwhich has a distance of `DISTANCE` from the invoking team. If\n`DISTANCE` is larger than the distance to the initial team, the image\nindex of the initial team is returned. Otherwise when the `COARRAY` is\npresent, if `DIM` is not present, a rank-1 array with corank elements is\nreturned, containing the cosubscripts for `COARRAY` specifying the invoking\nimage. If `DIM` is present, a scalar is returned, with the value of\nthe `DIM` element of `THIS_IMAGE(COARRAY)`.\n\n\n\n### Example\n\n ```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n  DO i = 1, NUM_IMAGES()\n\n    WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n  END DO\n\nEND IF\n\n\n! Check whether the current image is the initial image\n\nIF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())\n\n  error stop \"something is rotten here\"\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nNUM_IMAGES, IMAGE_INDEX\n" -} \ No newline at end of file + "keyword": "THIS_IMAGE", + "docstr": "`THIS_IMAGE` — Function that returns the cosubscript index of this image\n\n### Description\nReturns the cosubscript for this image.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = THIS_IMAGE(DISTANCE)`
\n | `RESULT = THIS_IMAGE(COARRAY [, DIM])`
\n\n\n\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n(not permitted together with `COARRAY`). \n\n | `COARRAY` | Coarray of any type (optional; if `DIM`\npresent, required). \n\n | `DIM` | default integer scalar (optional). If present,\n`DIM` shall be between one and the corank of `COARRAY`.\n\n\n\n\n\n\n### Return value\nDefault integer. If `COARRAY` is not present, it is scalar; if\n`DISTANCE` is not present or has value 0, its value is the image index on\nthe invoking image for the current team, for values smaller or equal\ndistance to the initial team, it returns the image index on the ancestor team\nwhich has a distance of `DISTANCE` from the invoking team. If\n`DISTANCE` is larger than the distance to the initial team, the image\nindex of the initial team is returned. Otherwise when the `COARRAY` is\npresent, if `DIM` is not present, a rank-1 array with corank elements is\nreturned, containing the cosubscripts for `COARRAY` specifying the invoking\nimage. If `DIM` is present, a scalar is returned, with the value of\nthe `DIM` element of `THIS_IMAGE(COARRAY)`.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n  DO i = 1, NUM_IMAGES()\n\n    WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n  END DO\n\nEND IF\n\n\n! Check whether the current image is the initial image\n\nIF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())\n\n  error stop \"something is rotten here\"\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nNUM_IMAGES, IMAGE_INDEX\n" +} diff --git a/src/docs/TIME.json b/src/docs/TIME.json index 8737d875..b4f37201 100644 --- a/src/docs/TIME.json +++ b/src/docs/TIME.json @@ -1,4 +1,4 @@ { - "keyword":"TIME", - "docstr":"`TIME` — Time function\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n \n\nSee TIME8, for information on a similar intrinsic that might be\nportable to more GNU Fortran implementations, though to fewer Fortran\ncompilers.\n\n\n\n\n### Syntax\n`RESULT = TIME()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n " -} \ No newline at end of file + "keyword": "TIME", + "docstr": "`TIME` — Time function\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n \n\nSee TIME8, for information on a similar intrinsic that might be\nportable to more GNU Fortran implementations, though to fewer Fortran\ncompilers.\n\n\n\n\n### Syntax\n`RESULT = TIME()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n " +} diff --git a/src/docs/TIME8.json b/src/docs/TIME8.json index 593bda27..b59512ff 100644 --- a/src/docs/TIME8.json +++ b/src/docs/TIME8.json @@ -1,4 +1,4 @@ { - "keyword":"TIME8", - "docstr":"`TIME8` — Time function (64-bit)\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `time(3)`. On a system with a 32-bit\n`time(3)`, `TIME8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = TIME8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK8, TIME\n\n " -} \ No newline at end of file + "keyword": "TIME8", + "docstr": "`TIME8` — Time function (64-bit)\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `time(3)`. On a system with a 32-bit\n`time(3)`, `TIME8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = TIME8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK8, TIME\n\n " +} diff --git a/src/docs/TINY.json b/src/docs/TINY.json index e311de96..3b8bd997 100644 --- a/src/docs/TINY.json +++ b/src/docs/TINY.json @@ -1,4 +1,4 @@ { - "keyword":"TINY", - "docstr":"`TINY` — Smallest positive number of a real kind\n\n### Description\n`TINY(X)` returns the smallest positive (non zero) number\nin the model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = TINY(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\nSee `HUGE` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" -} \ No newline at end of file + "keyword": "TINY", + "docstr": "`TINY` — Smallest positive number of a real kind\n\n### Description\n`TINY(X)` returns the smallest positive (non zero) number\nin the model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = TINY(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\nSee `HUGE` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n" +} diff --git a/src/docs/TRAILZ.json b/src/docs/TRAILZ.json index 77dc2676..cac14d38 100644 --- a/src/docs/TRAILZ.json +++ b/src/docs/TRAILZ.json @@ -1,4 +1,4 @@ { - "keyword":"TRAILZ", - "docstr":"`TRAILZ` — Number of trailing zero bits of an integer\n\n### Description\n`TRAILZ` returns the number of trailing zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = TRAILZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_trailz\n\n  WRITE (*,*) TRAILZ(8) ! prints 3\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, LEADZ, POPPAR, POPCNT\n" -} \ No newline at end of file + "keyword": "TRAILZ", + "docstr": "`TRAILZ` — Number of trailing zero bits of an integer\n\n### Description\n`TRAILZ` returns the number of trailing zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = TRAILZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trailz\n\n  WRITE (*,*) TRAILZ(8) ! prints 3\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, LEADZ, POPPAR, POPCNT\n" +} diff --git a/src/docs/TRANSFER.json b/src/docs/TRANSFER.json index 8c4e5a5b..78e603d9 100644 --- a/src/docs/TRANSFER.json +++ b/src/docs/TRANSFER.json @@ -1,4 +1,4 @@ { - "keyword":"TRANSFER", - "docstr":"`TRANSFER` — Transfer bit patterns\n\n### Description\nInterprets the bitwise representation of `SOURCE` in memory as if it\nis the representation of a variable or array of the same type and type\nparameters as `MOLD`.\n\n \nThis is approximately equivalent to the C concept of casting one\ntype to another.\n\n\n\n\n### Syntax\n`RESULT = TRANSFER(SOURCE, MOLD[, SIZE])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type. \n\n | `MOLD` | Shall be a scalar or an array of any type. \n\n | `SIZE` | (Optional) shall be a scalar of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MOLD`, with the bit level\nrepresentation of `SOURCE`. If `SIZE` is present, the result is\na one-dimensional array of length `SIZE`. If `SIZE` is absent\nbut `MOLD` is an array (of any size or shape), the result is a one-\ndimensional array of the minimum length needed to contain the entirety\nof the bitwise representation of `SOURCE`. If `SIZE` is absent\nand `MOLD` is a scalar, the result is a scalar.\n\n \nIf the bitwise representation of the result is longer than that of\n`SOURCE`, then the leading bits of the result correspond to those of\n`SOURCE` and any trailing bits are filled arbitrarily.\n\n \n\nWhen the resulting bit representation does not correspond to a valid\nrepresentation of a variable of the same type as `MOLD`, the results\nare undefined, and subsequent operations on the result cannot be\nguaranteed to produce sensible behavior. For example, it is possible to\ncreate `LOGICAL` variables for which `VAR` and\n`.NOT.``VAR` both appear to be true.\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_transfer\n\n  integer :: x = 2143289344\n\n  print *, transfer(x, 1.0) ! prints \"NaN\" on i686\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "TRANSFER", + "docstr": "`TRANSFER` — Transfer bit patterns\n\n### Description\nInterprets the bitwise representation of `SOURCE` in memory as if it\nis the representation of a variable or array of the same type and type\nparameters as `MOLD`.\n\n \nThis is approximately equivalent to the C concept of casting one\ntype to another.\n\n\n\n\n### Syntax\n`RESULT = TRANSFER(SOURCE, MOLD[, SIZE])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type. \n\n | `MOLD` | Shall be a scalar or an array of any type. \n\n | `SIZE` | (Optional) shall be a scalar of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MOLD`, with the bit level\nrepresentation of `SOURCE`. If `SIZE` is present, the result is\na one-dimensional array of length `SIZE`. If `SIZE` is absent\nbut `MOLD` is an array (of any size or shape), the result is a one-\ndimensional array of the minimum length needed to contain the entirety\nof the bitwise representation of `SOURCE`. If `SIZE` is absent\nand `MOLD` is a scalar, the result is a scalar.\n\n \nIf the bitwise representation of the result is longer than that of\n`SOURCE`, then the leading bits of the result correspond to those of\n`SOURCE` and any trailing bits are filled arbitrarily.\n\n \n\nWhen the resulting bit representation does not correspond to a valid\nrepresentation of a variable of the same type as `MOLD`, the results\nare undefined, and subsequent operations on the result cannot be\nguaranteed to produce sensible behavior. For example, it is possible to\ncreate `LOGICAL` variables for which `VAR` and\n`.NOT.``VAR` both appear to be true.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_transfer\n\n  integer :: x = 2143289344\n\n  print *, transfer(x, 1.0) ! prints \"NaN\" on i686\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/TRANSPOSE.json b/src/docs/TRANSPOSE.json index 8deb9ab4..1bcddbe1 100644 --- a/src/docs/TRANSPOSE.json +++ b/src/docs/TRANSPOSE.json @@ -1,4 +1,4 @@ { - "keyword":"TRANSPOSE", - "docstr":"`TRANSPOSE` — Transpose an array of rank two\n\n### Description\nTranspose an array of rank two. Element (i, j) of the result has the value\n`MATRIX(j, i)`, for all i, j.\n\n\n\n### Syntax\n`RESULT = TRANSPOSE(MATRIX)`\n\n\n### Arguments\n\n \n | `MATRIX` | Shall be an array of any type and have a rank of two.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MATRIX`, and has shape\n`(/ m, n /)` if `MATRIX` has shape `(/ n, m /)`. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" -} \ No newline at end of file + "keyword": "TRANSPOSE", + "docstr": "`TRANSPOSE` — Transpose an array of rank two\n\n### Description\nTranspose an array of rank two. Element (i, j) of the result has the value\n`MATRIX(j, i)`, for all i, j.\n\n\n\n### Syntax\n`RESULT = TRANSPOSE(MATRIX)`\n\n\n### Arguments\n\n \n | `MATRIX` | Shall be an array of any type and have a rank of two.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MATRIX`, and has shape\n`(/ m, n /)` if `MATRIX` has shape `(/ n, m /)`. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n" +} diff --git a/src/docs/TRIM.json b/src/docs/TRIM.json index 239f5b41..04d93619 100644 --- a/src/docs/TRIM.json +++ b/src/docs/TRIM.json @@ -1,4 +1,4 @@ { - "keyword":"TRIM", - "docstr":"`TRIM` — Remove trailing blank characters of a string\n\n### Description\nRemoves trailing blank characters of a string.\n\n\n\n### Syntax\n`RESULT = TRIM(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nA scalar of type `CHARACTER` which length is that of `STRING`\nless the number of trailing blanks.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_trim\n\n  CHARACTER(len=10), PARAMETER :: s = \"GFORTRAN \"\n\n  WRITE(*,*) LEN(s), LEN(TRIM(s)) ! \"10 8\", with/without trailing blanks\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nADJUSTL, ADJUSTR\n" -} \ No newline at end of file + "keyword": "TRIM", + "docstr": "`TRIM` — Remove trailing blank characters of a string\n\n### Description\nRemoves trailing blank characters of a string.\n\n\n\n### Syntax\n`RESULT = TRIM(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nA scalar of type `CHARACTER` which length is that of `STRING`\nless the number of trailing blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trim\n\n  CHARACTER(len=10), PARAMETER :: s = \"GFORTRAN \"\n\n  WRITE(*,*) LEN(s), LEN(TRIM(s)) ! \"10 8\", with/without trailing blanks\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nADJUSTL, ADJUSTR\n" +} diff --git a/src/docs/TTYNAM.json b/src/docs/TTYNAM.json index a0acec83..efb7352a 100644 --- a/src/docs/TTYNAM.json +++ b/src/docs/TTYNAM.json @@ -1,4 +1,4 @@ { - "keyword":"TTYNAM", - "docstr":"`TTYNAM` — Get the name of a terminal device.\n\n### Description\nGet the name of a terminal device. For more information,\nsee `ttyname(3)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `NAME = TTYNAM(UNIT)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `NAME` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_ttynam\n\n  INTEGER :: unit\n\n  DO unit = 1, 10\n\n    IF (isatty(unit=unit)) write(*,*) ttynam(unit)\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nISATTY\n" -} \ No newline at end of file + "keyword": "TTYNAM", + "docstr": "`TTYNAM` — Get the name of a terminal device.\n\n### Description\nGet the name of a terminal device. For more information,\nsee `ttyname(3)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `NAME = TTYNAM(UNIT)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `NAME` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_ttynam\n\n  INTEGER :: unit\n\n  DO unit = 1, 10\n\n    IF (isatty(unit=unit)) write(*,*) ttynam(unit)\n\n  END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nISATTY\n" +} diff --git a/src/docs/UBOUND.json b/src/docs/UBOUND.json index 426784d2..b30e6fe4 100644 --- a/src/docs/UBOUND.json +++ b/src/docs/UBOUND.json @@ -1,4 +1,4 @@ { - "keyword":"UBOUND", - "docstr":"`UBOUND` — Upper dimension bounds of an array\n\n### Description\nReturns the upper bounds of an array, or a single upper bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = UBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the upper bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the upper bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the upper bound is taken to be the number of elements along\nthe relevant dimension.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLBOUND, LCOBOUND\n" -} \ No newline at end of file + "keyword": "UBOUND", + "docstr": "`UBOUND` — Upper dimension bounds of an array\n\n### Description\nReturns the upper bounds of an array, or a single upper bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = UBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the upper bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the upper bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the upper bound is taken to be the number of elements along\nthe relevant dimension.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLBOUND, LCOBOUND\n" +} diff --git a/src/docs/UCOBOUND.json b/src/docs/UCOBOUND.json index 7606a4ab..7ad0ea06 100644 --- a/src/docs/UCOBOUND.json +++ b/src/docs/UCOBOUND.json @@ -1,4 +1,4 @@ { - "keyword":"UCOBOUND", - "docstr":"`UCOBOUND` — Upper codimension bounds of an array\n\n### Description\nReturns the upper cobounds of a coarray, or a single upper cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLCOBOUND, LBOUND\n" -} \ No newline at end of file + "keyword": "UCOBOUND", + "docstr": "`UCOBOUND` — Upper codimension bounds of an array\n\n### Description\nReturns the upper cobounds of a coarray, or a single upper cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLCOBOUND, LBOUND\n" +} diff --git a/src/docs/UMASK.json b/src/docs/UMASK.json index 99b12939..75adc57f 100644 --- a/src/docs/UMASK.json +++ b/src/docs/UMASK.json @@ -1,4 +1,4 @@ { - "keyword":"UMASK", - "docstr":"`UMASK` — Set the file creation mask\n\n### Description\nSets the file creation mask to `MASK`. If called as a function, it\nreturns the old value. If called as a subroutine and argument `OLD`\nif it is supplied, it is set to the old value. See `umask(2)`.\n\n\n\n### Syntax\n\n \n\n\n | `OLD = UMASK(MASK)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `OLD` | (Optional) Shall be a scalar of type\n`INTEGER`.\n\n\n\n \n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" -} \ No newline at end of file + "keyword": "UMASK", + "docstr": "`UMASK` — Set the file creation mask\n\n### Description\nSets the file creation mask to `MASK`. If called as a function, it\nreturns the old value. If called as a subroutine and argument `OLD`\nif it is supplied, it is set to the old value. See `umask(2)`.\n\n\n\n### Syntax\n\n \n\n\n | `OLD = UMASK(MASK)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `OLD` | (Optional) Shall be a scalar of type\n`INTEGER`.\n\n\n\n \n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n" +} diff --git a/src/docs/UNLINK.json b/src/docs/UNLINK.json index 68436a45..7e0acda0 100644 --- a/src/docs/UNLINK.json +++ b/src/docs/UNLINK.json @@ -1,4 +1,4 @@ { - "keyword":"UNLINK", - "docstr":"`UNLINK` — Remove a file from the file system\n\n### Description\nUnlinks the file `PATH`. A null character (`CHAR(0)`) can be\nused to mark the end of the name in `PATH`; otherwise, trailing\nblanks in the file name are ignored. If the `STATUS` argument is\nsupplied, it contains 0 on success or a nonzero error code upon return;\nsee `unlink(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = UNLINK(PATH)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, SYMLNK\n" -} \ No newline at end of file + "keyword": "UNLINK", + "docstr": "`UNLINK` — Remove a file from the file system\n\n### Description\nUnlinks the file `PATH`. A null character (`CHAR(0)`) can be\nused to mark the end of the name in `PATH`; otherwise, trailing\nblanks in the file name are ignored. If the `STATUS` argument is\nsupplied, it contains 0 on success or a nonzero error code upon return;\nsee `unlink(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = UNLINK(PATH)`
\n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, SYMLNK\n" +} diff --git a/src/docs/UNPACK.json b/src/docs/UNPACK.json index 8bf44eff..e741c0ce 100644 --- a/src/docs/UNPACK.json +++ b/src/docs/UNPACK.json @@ -1,4 +1,4 @@ { - "keyword":"UNPACK", - "docstr":"`UNPACK` — Unpack an array of rank one into an array\n\n### Description\nStore the elements of `VECTOR` in an array of higher rank.\n\n\n\n### Syntax\n`RESULT = UNPACK(VECTOR, MASK, FIELD)`\n\n\n### Arguments\n\n \n | `VECTOR` | Shall be an array of any type and rank one. It\nshall have at least as many elements as `MASK` has `TRUE` values. \n\n | `MASK` | Shall be an array of type `LOGICAL`. \n\n | `FIELD` | Shall be of the same type as `VECTOR` and have\nthe same shape as `MASK`.\n\n\n\n\n\n\n### Return value\nThe resulting array corresponds to `FIELD` with `TRUE` elements\nof `MASK` replaced by values from `VECTOR` in array element order.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_unpack\n\n  integer :: vector(2) = (/1,1/)\n\n  logical :: mask(4) = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)\n\n  integer :: field(2,2) = 0, unity(2,2)\n\n\n  ! result: unity matrix\n\n  unity = unpack(vector, reshape(mask, (/2,2/)), field)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPACK, SPREAD\n" -} \ No newline at end of file + "keyword": "UNPACK", + "docstr": "`UNPACK` — Unpack an array of rank one into an array\n\n### Description\nStore the elements of `VECTOR` in an array of higher rank.\n\n\n\n### Syntax\n`RESULT = UNPACK(VECTOR, MASK, FIELD)`\n\n\n### Arguments\n\n \n | `VECTOR` | Shall be an array of any type and rank one. It\nshall have at least as many elements as `MASK` has `TRUE` values. \n\n | `MASK` | Shall be an array of type `LOGICAL`. \n\n | `FIELD` | Shall be of the same type as `VECTOR` and have\nthe same shape as `MASK`.\n\n\n\n\n\n\n### Return value\nThe resulting array corresponds to `FIELD` with `TRUE` elements\nof `MASK` replaced by values from `VECTOR` in array element order.\n\n\n\n### Example\n```\n\n\nPROGRAM test_unpack\n\n  integer :: vector(2) = (/1,1/)\n\n  logical :: mask(4) = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)\n\n  integer :: field(2,2) = 0, unity(2,2)\n\n\n  ! result: unity matrix\n\n  unity = unpack(vector, reshape(mask, (/2,2/)), field)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPACK, SPREAD\n" +} diff --git a/src/docs/VERIFY.json b/src/docs/VERIFY.json index 13df6084..921e2c39 100644 --- a/src/docs/VERIFY.json +++ b/src/docs/VERIFY.json @@ -1,4 +1,4 @@ { - "keyword":"VERIFY", - "docstr":"`VERIFY` — Scan a string for characters not a given set\n\n### Description\nVerifies that all the characters in `STRING` belong to the set of\ncharacters in `SET`.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nnot in `SET`. If `BACK` equals `TRUE`, the rightmost\nposition is returned. If all characters of `STRING` are found in\n`SET`, the result is zero.\n\n\n\n\n### Syntax\n`RESULT = VERIFY(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_verify\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"AO\") ! 1, found 'F'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"FOO\") ! 3, found 'R'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\") ! 1, found 'F'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\", .TRUE.) ! 7, found 'N'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"FORTRAN\") ! 0' found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, INDEX intrinsic\n" -} \ No newline at end of file + "keyword": "VERIFY", + "docstr": "`VERIFY` — Scan a string for characters not a given set\n\n### Description\nVerifies that all the characters in `STRING` belong to the set of\ncharacters in `SET`.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nnot in `SET`. If `BACK` equals `TRUE`, the rightmost\nposition is returned. If all characters of `STRING` are found in\n`SET`, the result is zero.\n\n\n\n\n### Syntax\n`RESULT = VERIFY(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_verify\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"AO\") ! 1, found 'F'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"FOO\") ! 3, found 'R'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\") ! 1, found 'F'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\", .TRUE.) ! 7, found 'N'\n\n  WRITE(*,*) VERIFY(\"FORTRAN\", \"FORTRAN\") ! 0' found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, INDEX intrinsic\n" +} diff --git a/src/docs/XOR.json b/src/docs/XOR.json index 030151bc..f9e44920 100644 --- a/src/docs/XOR.json +++ b/src/docs/XOR.json @@ -1,4 +1,4 @@ { - "keyword":"XOR", - "docstr":"`XOR` — Bitwise logical exclusive OR\n\n### Description\nBitwise logical exclusive or.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IEOR intrinsic and for logical arguments the\n`.NEQV.` operator, which are both defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = XOR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n\n ```\n\n\nPROGRAM test_xor\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) XOR(T, T), XOR(T, F), XOR(F, T), XOR(F, F)\n\n  WRITE (*,*) XOR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IEOR\n" -} \ No newline at end of file + "keyword": "XOR", + "docstr": "`XOR` — Bitwise logical exclusive OR\n\n### Description\nBitwise logical exclusive or.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IEOR intrinsic and for logical arguments the\n`.NEQV.` operator, which are both defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = XOR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_xor\n\n  LOGICAL :: T = .TRUE., F = .FALSE.\n\n  INTEGER :: a, b\n\n  DATA a / Z'F' /, b / Z'3' /\n\n\n  WRITE (*,*) XOR(T, T), XOR(T, F), XOR(F, T), XOR(F, F)\n\n  WRITE (*,*) XOR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IEOR\n" +} diff --git a/src/lang-server.ts b/src/lang-server.ts index 18d8935d..d9613d9f 100644 --- a/src/lang-server.ts +++ b/src/lang-server.ts @@ -28,7 +28,7 @@ export class FortranLangServer { } this.c = new LanguageClient( - 'fortran-langserver', + LANG_SERVER_TOOL_ID, serverOptions, clientOptions ) @@ -58,7 +58,7 @@ export function checkForLangServer(config) { ) return false } - let langServerAvailable = getBinPath('fortran-langserver') + let langServerAvailable = getBinPath(LANG_SERVER_TOOL_ID) if (!langServerAvailable) { promptForMissingTool(LANG_SERVER_TOOL_ID) vscode.window.showInformationMessage( diff --git a/src/lib/helper.ts b/src/lib/helper.ts index 824b1fcb..72f87a16 100644 --- a/src/lib/helper.ts +++ b/src/lib/helper.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as vscode from 'vscode'; import intrinsics from './fortran-intrinsics'; -import { installTool } from './tools'; +import { installTool, LANG_SERVER_TOOL_ID } from './tools'; // IMPORTANT: this should match the value // on the package.json otherwise the extension won't diff --git a/src/lib/tools.ts b/src/lib/tools.ts index a4e838ec..45e071f5 100644 --- a/src/lib/tools.ts +++ b/src/lib/tools.ts @@ -9,7 +9,7 @@ export function installTool(toolname) { if (toolname === LANG_SERVER_TOOL_ID) { const installProcess = cp.spawn( 'pip', - 'install fortran-language-server'.split(' ') + 'install --user --upgrade fortran-language-server'.split(' ') ); installProcess.on('exit', (code, signal) => { if (code !== 0) { diff --git a/syntaxes/fortran_fixed-form.tmLanguage.json b/syntaxes/fortran_fixed-form.tmLanguage.json index d12dccb9..92b51ed0 100644 --- a/syntaxes/fortran_fixed-form.tmLanguage.json +++ b/syntaxes/fortran_fixed-form.tmLanguage.json @@ -8,9 +8,7 @@ "f77", "F77", "for", - "FOR", - "fpp", - "FPP" + "FOR" ], "injections": { "source.fortran.fixed - ( string | comment )": { diff --git a/syntaxes/fortran_free-form.tmLanguage.json b/syntaxes/fortran_free-form.tmLanguage.json index 6813f37f..4b5737b1 100644 --- a/syntaxes/fortran_free-form.tmLanguage.json +++ b/syntaxes/fortran_free-form.tmLanguage.json @@ -12,14 +12,21 @@ "f08", "F08", "f18", - "F18" + "F18", + "fpp", + "FPP", + ".pf", + ".PF" ], "firstLineMatch": "(?i)-[*]- mode: fortran free -[*]-", "injections": { - "source.fortran.free - ( string | comment )": { + "source.fortran.free - ( string | comment | meta.preprocessor )": { "patterns": [ { "include": "#line-continuation-operator" + }, + { + "include": "#preprocessor" } ] }, @@ -120,21 +127,22 @@ ], "repository": { "preprocessor": { - "begin": "^\\s*(#)", + "name": "meta.preprocessor", + "begin": "^\\s*(#:?)", "beginCaptures": { "1": { - "name": "keyword.preprocessor.indicator.fortran" + "name": "keyword.control.preprocessor.indicator.fortran" } }, "end": "\\n", "patterns": [ { - "include": "#preprocessor-if-construct" + "include": "#preprocessor-if-construct" }, { - "include": "#preprocessor-statements" + "include": "#preprocessor-statements" } - ] + ] }, "preprocessor-comments": { "name": "comment.preprocessor", @@ -144,17 +152,285 @@ "preprocessor-constants": { "patterns": [ { - "include": "#preprocessor-numeric-constant" + "include": "#cpp-numeric-constant" }, { "include": "#preprocessor-string-constant" } ] }, - "preprocessor-numeric-constant": { - "comment": "Numeric constants", - "name": "constant.numeric.fortran", - "match": "(?ix)[\\+\\-]?(\\b\\d+\\.?\\d*|\\.\\d+) (_\\w+|d[\\+\\-]?\\d+|e[\\+\\-]?\\d+(_\\w+)?)?(?![a-z_])" + "cpp-numeric-constant": { + "match": "(?=)|(\\<)|(\\>)|(~)|(\\^)|(&)|(\\!)|(\\|)", + "captures": { + "1": { + "name": "keyword.operator.logical.preprocessor.and.fortran" + }, + "2": { + "name": "keyword.operator.logical.preprocessor.equals.fortran" + }, + "3": { + "name": "keyword.operator.logical.preprocessor.not_equals.fortran" + }, + "4": { + "name": "keyword.operator.logical.preprocessor.or.fortran" + }, + "5": { + "name": "keyword.operator.logical.preprocessor.less_eq.fortran" + }, + "6": { + "name": "keyword.operator.logical.preprocessor.more_eq.fortran" + }, + "7": { + "name": "keyword.operator.logical.preprocessor.less.fortran" + }, + "8": { + "name": "keyword.operator.logical.preprocessor.more.fortran" + }, + "9": { + "name": "keyword.operator.logical.preprocessor.complementary.fortran" + }, + "10": { + "name": "keyword.operator.logical.preprocessor.xor.fortran" + }, + "11": { + "name": "keyword.operator.logical.preprocessor.bitand.fortran" + }, + "12": { + "name": "keyword.operator.logical.preprocessor.not.fortran" + }, + "13": { + "name": "keyword.operator.logical.preprocessor.bitor.fortran" + } + } + }, + "preprocessor-arithmetic-operators": { + "comment": "division regex is different than in main fortran", + "match": "(\\-)|(\\+)|(\\/)|(\\*)", + "captures": { + "1": { + "name": "keyword.operator.subtraction.fortran" + }, + "2": { + "name": "keyword.operator.addition.fortran" + }, + "3": { + "name": "keyword.operator.division.fortran" + }, + "4": { + "name": "keyword.operator.multiplication.fortran" + } + } }, "preprocessor-statements": { "patterns": [ @@ -371,10 +733,11 @@ ] }, "preprocessor-define-statement": { + "name": "meta.preprocessor.macro.fortran", "begin": "(?i)\\G\\s*\\b(define)\\b", "beginCaptures": { "1": { - "name": "keyword.define.preprocessor.fortran" + "name": "keyword.control.preprocessor.define.fortran" } }, "end": "(?=\\n)", @@ -383,10 +746,7 @@ "include": "#preprocessor-comments" }, { - "include": "#preprocessor-string-constant" - }, - { - "include": "#preprocessor-assignment-operator" + "include": "#preprocessor-constants" }, { "include": "#preprocessor-line-continuation-operator" @@ -394,10 +754,11 @@ ] }, "preprocessor-error-statement": { + "name": "meta.preprocessor.macro.fortran", "begin": "(?i)\\G\\s*(error)\\b", "beginCaptures": { "1": { - "name": "keyword.error.preprocessor.fortran" + "name": "keyword.control.preprocessor.error.fortran" } }, "end": "(?=\\n)", @@ -414,10 +775,11 @@ ] }, "preprocessor-include-statement": { + "name": "meta.preprocessor.include.fortran", "begin": "(?i)\\G\\s*(include)\\b", "beginCaptures": { "1": { - "name": "keyword.include.preprocessor.fortran" + "name": "keyword.control.preprocessor.include.fortran" } }, "end": "(?=\\n)", @@ -449,10 +811,11 @@ ] }, "preprocessor-pragma-statement": { + "name": "meta.preprocessor.pragma.fortran", "begin": "(?i)\\G\\s*\\b(pragma)\\b", "beginCaptures": { "1": { - "name": "keyword.pragma.preprocessor.fortran" + "name": "keyword.control.preprocessor.pragma.fortran" } }, "end": "(?=\\n)", @@ -466,16 +829,20 @@ ] }, "preprocessor-undefine-statement": { + "name": "meta.preprocessor.undef.fortran", "begin": "(?i)\\G\\s*\\b(undef)\\b", "beginCaptures": { "1": { - "name": "keyword.undef.preprocessor.fortran" + "name": "keyword.control.preprocessor.undef.fortran" } }, "end": "(?=\\n)", "patterns": [ { "include": "#preprocessor-comments" + }, + { + "include": "#preprocessor-line-continuation-operator" } ] }, @@ -985,10 +1352,13 @@ "comment": "Introduced in the Fortran 1990 standard.", "contentName": "meta.named-construct.fortran.modern", "begin": "(?ix)([a-z]\\w*)\\s*(:)(?=\\s*(?:associate|block(?!\\s*data)|critical|do|forall|if|select\\s*case|select\\s*type|select\\s*rank|where)\\b)", - "end": "(?i)\\s*(?!\\b(?:associate|block(?!\\s*data)|critical|do|forall|if|select\\s*case|select\\s*type|select\\s*rank|where)\\b)\\b(?:\\b(\\1)\\b)?(?:\\s*([^\\s;!][^;!\\n]*?))?(?=\\s*[;!\\n])", + "end": "(?i)(?!\\s*\\b(?:associate|block(?!\\s*data)|critical|do|forall|if|select\\s*case|select\\s*type|select\\s*rank|where)\\b)(?:\\b(\\1)\\b)?([^\\s;!\\n]*?)?(?=\\s*[;!\\n])", "endCaptures": { + "1": { + "name": "meta.label.end.name.fortran" + }, "2": { - "name": "invalid.error.fortran.modern" + "name": "invalid.error.named-control-constructs.fortran.modern" } }, "applyEndPatternLast": 1, @@ -1243,10 +1613,14 @@ "include": "#parentheses" }, { - "match": "(?i)\\b(then)\\b", + "comment": "capture the label if present", + "match": "(?i)\\b(then)\\b(\\s*[a-z]\\w*)?", "captures": { "1": { "name": "keyword.control.then.fortran" + }, + "2": { + "name": "meta.label.elseif.fortran" } } }, @@ -1270,6 +1644,18 @@ "begin": "(?!(\\s*(;|!|\\n)))", "end": "(?=[;!\\n])", "patterns": [ + { + "comment": "capture the label if present", + "match": "\\s*([a-z]\\w*)?\\s*\\b(\\w*)\\b", + "captures": { + "1": { + "name": "meta.label.else.fortran" + }, + "2": { + "name": "invalid.error.label.else.fortran" + } + } + }, { "include": "#invalid-word" } @@ -1911,10 +2297,13 @@ "stop-statement": { "comment": "Introduced in the Fortran 1977 standard.", "name": "meta.statement.control.stop.fortran", - "begin": "(?i)\\s*\\b(stop)\\b", + "begin": "(?i)\\s*\\b(stop)\\b(?:\\s*\\b([a-z]\\w*)\\b)?", "beginCaptures": { "1": { "name": "keyword.control.stop.fortran" + }, + "2": { + "name": "meta.label.stop.stop" } }, "end": "(?=[;!\\n])", @@ -1942,7 +2331,7 @@ "patterns": [ { "comment": "Attribute list.", - "contentName": "meta.attribute-list.fortran", + "contentName": "meta.attribute-list.derived-type.fortran", "begin": "\\G(?=\\s*(,|::))", "end": "(::)|(?=[;!\\n])", "endCaptures": { @@ -1995,16 +2384,19 @@ "name": "entity.name.type.fortran" }, "3": { - "name": "invalid.error.fortran" + "name": "invalid.error.derived-type.fortran" } }, "patterns": [ { "include": "#dummy-variable-list" }, + { + "include": "#comments" + }, { "comment": "Derived type specification block.", - "name": "meta.block.specification.fortran", + "name": "meta.block.specification.derived-type.fortran", "begin": "(?i)^(?!\\s*\\b(?:contains|end\\s*type)\\b)", "end": "(?i)^(?=\\s*\\b(?:contains|end\\s*type)\\b)", "patterns": [ @@ -2106,7 +2498,7 @@ }, { "comment": "Attribute list.", - "contentName": "meta.attribute-list.fortran", + "contentName": "meta.attribute-list.derived-type-component-procedure.fortran", "begin": "(?=\\s*(,|::|\\())", "end": "(::)|(?=[;!\\n])", "endCaptures": { @@ -2147,8 +2539,8 @@ }, "derived-type-component-type-specification": { "comment": "Introduced in the Fortran 1995 standard.", - "name": "meta.specification.type.fortran", - "begin": "(?ix)(?=\\b(?:character|class|complex|double\\s*precision|double\\s*complex|integer|logical|real|type)\\b(?![^'\";!\\n]*\\bfunction\\b))", + "name": "meta.specification.derived-type.fortran", + "begin": "(?ix)(?=\\b(?:character|class|complex|double\\s*precision|double\\s*complex|integer|logical|real|type)\\b(?![^'\";!\\n]*(? { vscode.window.showTextDocument(doc); const symbolProvider = new FortranDocumentSymbolProvider(); const symbols = await symbolProvider.provideDocumentSymbols(doc, null); - assert.equal(symbols.length, 1); + assert.strictEqual(symbols.length, 1); }); }); diff --git a/test/helper.test.ts b/test/helper.test.ts index f7525367..76e7ccc0 100644 --- a/test/helper.test.ts +++ b/test/helper.test.ts @@ -14,46 +14,46 @@ import { suite("function helper test", () => { test("validVariableName does not allow variables starting with number", () => { - assert.equal(false, validVariableName("1as")); + assert.strictEqual(false, validVariableName("1as")); }); test("validVariableName returns true with correct variable", () => { - assert.equal(true, validVariableName("matA")); + assert.strictEqual(true, validVariableName("matA")); }); test("validVariableName returns true for variables starting with uppercase", () => { - assert.equal(true, validVariableName("MatA")); + assert.strictEqual(true, validVariableName("MatA")); }); test("validVariableName return true for variable starting with _", () => { - assert.equal(true, validVariableName("_matA")); + assert.strictEqual(true, validVariableName("_matA")); }); test("parseFuntion return undefined on empty line", () => { - // assert.equal(undefined, parseFunction({text: ""})); + // assert.strictEqual(undefined, parseFunction({text: ""})); }); test("parseFuntion return undefined if function keyword is missing", () => { - // assert.equal(undefined, parseFunction({"hello")); + // assert.strictEqual(undefined, parseFunction({"hello")); }); test("parseFuntion return correct function name", () => { - // assert.equal("hello", parseFunction("function hello()").name); + // assert.strictEqual("hello", parseFunction("function hello()").name); }); test("parseFuntion return correct number of args", () => { - // assert.equal(2, parseFunction("function hello( a, b)").args.length); + // assert.strictEqual(2, parseFunction("function hello( a, b)").args.length); }); test("parseArgs return the correct number of args", () => { - assert.equal(2, parseArgs("a,b").length); + assert.strictEqual(2, parseArgs("a,b").length); }); test("parseArgs handle spaces well", () => { - assert.equal(2, parseArgs(" a, b").length); + assert.strictEqual(2, parseArgs(" a, b").length); }); test("parseArgs handle empty args", () => { - assert.equal(0, parseArgs("").length); + assert.strictEqual(0, parseArgs("").length); }); }); diff --git a/test/index.ts b/test/index.ts index 496cf0bd..215606cf 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,25 +1,38 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for details. +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; -// This file is used by VS Code's default test runner to configure Mocha before the test run. +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: 'tdd', + color: true + }); -/* tslint:disable:no-var-keyword no-var-requires */ -var testRunner = require("vscode/lib/testrunner"); -/* tslint:enable:no-var-keyword no-var-requires */ + const testsRoot = __dirname; -let mochaOptions: any = { - ui: "tdd", - useColors: true, - invert: true, - grep: "debuggerContext" // Do not run tests intended for the debuggerContext -}; + return new Promise((c, e) => { + glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) { + return e(err); + } -// Look for the env variable to decide wheter to use the TeamCity reporter or not -if (process.env.VSCODE_REACT_NATIVE_TEAMCITY_TEST) { - mochaOptions.reporter = "mocha-teamcity-reporter"; -} - -// Register Mocha options -testRunner.configure(mochaOptions); + // Add files to the test suite + files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); -module.exports = testRunner; + try { + // Run the mocha test + mocha.timeout(100000); + mocha.run(failures => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + e(err); + } + }); + }); +} diff --git a/test/resources/abstraction.f90 b/test/resources/abstraction.f90 new file mode 100644 index 00000000..98f66e2f --- /dev/null +++ b/test/resources/abstraction.f90 @@ -0,0 +1,68 @@ +! This is an example demonstrating abstraction and the benefit of using +! submodules. However for convenience of testing all files have been merged to 1 + +! base.f90 +module BaseClass + + implicit none + + type, abstract :: Base ! <-- the base class with subroutine "sub" + contains + procedure(sub_interface), nopass, deferred :: sub + end type + + interface + subroutine sub_interface(i) ! <-- the interface is defined here + implicit none + integer, intent(in) :: i + end subroutine sub_interface + end interface + +end module BaseClass + +! child.f90 +module ChildClass + + use BaseClass + implicit none + + type, extends(Base) :: Child ! <-- we extend the Base Class + contains + procedure, nopass :: sub + end type + + interface + module subroutine sub(i) ! <-- the interface for the submodule (unfortunately we have to declare the entire thing again) + implicit none + integer, intent(in) :: i + end subroutine sub + end interface + +end module ChildClass + +! sub.f90 +submodule (ChildClass) ChildSub + +contains + + module procedure sub ! <-- we finally get to define the subroutine + print*, "The answer is :", i + end procedure + +end submodule + +! main.f90 +program test + + use ChildClass + + implicit none + + type(Child) :: c + integer :: i + + do i=1, 10 + call c%sub(i) + end do + +end program test \ No newline at end of file diff --git a/test/resources/abstraction.f90.snap b/test/resources/abstraction.f90.snap new file mode 100644 index 00000000..e1f402f3 --- /dev/null +++ b/test/resources/abstraction.f90.snap @@ -0,0 +1,308 @@ +>! This is an example demonstrating abstraction and the benefit of using +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! submodules. However for convenience of testing all files have been merged to 1 +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +> +>! base.f90 +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^ source.fortran.free comment.line.fortran +>module BaseClass +#^^^^^^ 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 +> +> implicit none +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> type, abstract :: Base ! <-- the base class with subroutine "sub" +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran storage.modifier.fortran.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran entity.name.type.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran comment.line.fortran +> contains +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran keyword.control.contains.fortran +> procedure(sub_interface), nopass, deferred :: sub +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.type-spec.fortran entity.name.function.procedure.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran storage.modifier.nopass.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran storage.modifier.deferred.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.name-list.fortran entity.name.function.procedure.fortran +> end type +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +> +> interface +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran keyword.control.interface.fortran +> subroutine sub_interface(i) ! <-- the interface is defined here +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran comment.line.fortran +> implicit none +#^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> integer, intent(in) :: i +#^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end subroutine sub_interface +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> end interface +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran keyword.control.endinterface.fortran.modern +> +>end module BaseClass +#^^^^^^^^^^ 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 +> +>! child.f90 +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^ source.fortran.free comment.line.fortran +>module ChildClass +#^^^^^^ 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 BaseClass +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran keyword.control.use.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran entity.name.class.module.fortran +> implicit none +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> type, extends(Base) :: Child ! <-- we extend the Base Class +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran storage.modifier.extends.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran entity.name.type.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran comment.line.fortran +> contains +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran keyword.control.contains.fortran +> procedure, nopass :: sub +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran storage.modifier.nopass.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.name-list.fortran entity.name.function.procedure.fortran +> end type +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +> +> interface +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran keyword.control.interface.fortran +> module subroutine sub(i) ! <-- the interface for the submodule (unfortunately we have to declare the entire thing again) +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran storage.modifier.module.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran +# ^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.first-line.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran comment.line.fortran +> implicit none +#^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> integer, intent(in) :: i +#^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end subroutine sub +#^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran +# ^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> end interface +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.interface.explicit.fortran keyword.control.endinterface.fortran.modern +> +>end module ChildClass +#^^^^^^^^^^ 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 +> +>! sub.f90 +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^ source.fortran.free comment.line.fortran +>submodule (ChildClass) ChildSub +#^^^^^^^^^ source.fortran.free meta.submodule.fortran keyword.other.submodule.fortran +# ^ source.fortran.free meta.submodule.fortran +# ^ source.fortran.free meta.submodule.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^ source.fortran.free meta.submodule.fortran entity.name.class.submodule.fortran +# ^ source.fortran.free meta.submodule.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.submodule.fortran +# ^^^^^^^^ source.fortran.free meta.submodule.fortran entity.name.module.submodule.fortran +> +>contains +#^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran keyword.control.contains.fortran +> +> module procedure sub ! <-- we finally get to define the subroutine +#^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran keyword.other.procedure.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran +# ^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran entity.name.function.procedure.fortran +# ^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran comment.line.fortran +> print*, "The answer is :", i +#^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran +# ^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +# ^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran +# ^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran meta.block.specification.procedure.fortran meta.parameter.fortran +> end procedure +#^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.submodule.fortran meta.block.specification.submodule.fortran meta.block.contains.fortran meta.procedure.fortran keyword.other.endprocedure.fortran +> +>end submodule +#^^^^^^^^^^^^^ source.fortran.free meta.submodule.fortran keyword.other.endsubmodule.fortran +> +>! main.f90 +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^ source.fortran.free comment.line.fortran +>program 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 +> +> use ChildClass +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.use.fortran keyword.control.use.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.use.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.use.fortran entity.name.class.module.fortran +> +> implicit none +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> type(Child) :: c +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> integer :: i +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> +> do i=1, 10 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran keyword.control.do.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +> call c%sub(i) +#^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran variable.other.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran punctuation.accessor.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran meta.statement.control.call.fortran punctuation.parentheses.right.fortran +> end do +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.do.unlabeled.fortran keyword.control.enddo.fortran +> +>end program 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/class.f90.snap b/test/resources/class.f90.snap index 5f88469b..5ad85abf 100644 --- a/test/resources/class.f90.snap +++ b/test/resources/class.f90.snap @@ -4,234 +4,234 @@ # ^^^^ 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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran keyword.control.use.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran entity.name.class.module.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran keyword.control.only.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.use.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran storage.modifier.public.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.type-spec.fortran punctuation.parentheses.left.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.type-spec.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.type-spec.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran storage.modifier.private.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.fortran meta.attribute-list.derived-type-contains-procedure.fortran meta.something.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.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.module.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.generic.fortran meta.attribute-list.derived-type-contains-generic-procedure.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.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.module.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.module.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.module.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.module.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.module.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 +#^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.statement.attribute-specification.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran support.function.intrinsic.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.allocatable.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran meta.attribute-list.derived-type-contains-final-procedure.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran meta.attribute-list.derived-type-contains-final-procedure.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran meta.block.contains.fortran meta.specification.procedure.final.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.derived-type.definition.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list 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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran meta.type-spec.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.left.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.type-spec.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.type-spec.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list 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 +#^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.module.fortran meta.block.specification.module.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.module.fortran meta.block.specification.module.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 diff --git a/test/resources/conditionals.f90 b/test/resources/conditionals.f90 new file mode 100644 index 00000000..13723cd3 --- /dev/null +++ b/test/resources/conditionals.f90 @@ -0,0 +1,55 @@ +! if +if (1 > 2) then +end if + +! if-else +if (1 > 2) then +else +end if + +! if-else-if-else +if (1 > 2) then +else if (2 < 1) then +else +end if + +! labelled if +label1: if (1 > 2) then +end if label1 + +! labelled if-else +label2: if (1 > 2) then +else label2 +end if label2 + +! labelled if-else-if-else +label3: if (1 > 2) then +else if (2 < 1) then label3 +else label3 +end if label3 + +! labelled if with whitespace after end label +label4: if (1 > 2) then +end if label4 ! bug continuous to new line + +! nested labels with whitespaces +if (1 > 2) then + label5: if (1) then + end if label5 ! +else +! whitespace in the "end if label5 " causes else to be incorrect +end if + +! stop +if (1) stop +if (1) stop label6 +if (1) stop "label"//"7" + +! do loop +do i = 1, 10 +end do + +! labelled do loop +label8: do i = 1, 10 +end do label8 + diff --git a/test/resources/conditionals.f90.snap b/test/resources/conditionals.f90.snap new file mode 100644 index 00000000..d057ffc9 --- /dev/null +++ b/test/resources/conditionals.f90.snap @@ -0,0 +1,298 @@ +>! if +#^ source.fortran.free comment.line.fortran +# ^^^ source.fortran.free comment.line.fortran +>if (1 > 2) then +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free +# ^^^^ source.fortran.free keyword.control.then.fortran +>end if +#^^^^^^ source.fortran.free keyword.control.endif.fortran +> +>! if-else +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^ source.fortran.free comment.line.fortran +>if (1 > 2) then +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free +# ^^^^ source.fortran.free keyword.control.then.fortran +>else +#^^^^ source.fortran.free meta.block.if.fortran keyword.control.else.fortran +>end if +#^^^^^^ source.fortran.free keyword.control.endif.fortran +> +>! if-else-if-else +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>if (1 > 2) then +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free +# ^^^^ source.fortran.free keyword.control.then.fortran +>else if (2 < 1) then +#^^^^^^^ source.fortran.free meta.block.if.fortran keyword.control.elseif.fortran +# ^ source.fortran.free meta.block.if.fortran +# ^ source.fortran.free meta.block.if.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.block.if.fortran constant.numeric.fortran +# ^ source.fortran.free meta.block.if.fortran +# ^ source.fortran.free meta.block.if.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.block.if.fortran +# ^ source.fortran.free meta.block.if.fortran constant.numeric.fortran +# ^ source.fortran.free meta.block.if.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.block.if.fortran +# ^^^^ source.fortran.free meta.block.if.fortran keyword.control.then.fortran +>else +#^^^^ source.fortran.free meta.block.if.fortran keyword.control.else.fortran +>end if +#^^^^^^ source.fortran.free keyword.control.endif.fortran +> +>! labelled if +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>label1: if (1 > 2) then +#^^^^^^^ source.fortran.free +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.then.fortran +>end if label1 +#^^^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.endif.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran meta.parameter.fortran +> +>! labelled if-else +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>label2: if (1 > 2) then +#^^^^^^^ source.fortran.free +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.then.fortran +>else label2 +#^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran keyword.control.else.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran meta.label.else.fortran +>end if label2 +#^^^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.endif.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran meta.parameter.fortran +> +>! labelled if-else-if-else +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>label3: if (1 > 2) then +#^^^^^^^ source.fortran.free +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.then.fortran +>else if (2 < 1) then label3 +#^^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran keyword.control.elseif.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran keyword.control.then.fortran +# ^^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran meta.label.elseif.fortran +>else label3 +#^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran keyword.control.else.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.if.fortran meta.label.else.fortran +>end if label3 +#^^^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.endif.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran meta.parameter.fortran +> +>! labelled if with whitespace after end label +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>label4: if (1 > 2) then +#^^^^^^^ source.fortran.free +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.if.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.then.fortran +>end if label4 ! bug continuous to new line +#^^^^^^ source.fortran.free meta.named-construct.fortran.modern keyword.control.endif.fortran +# ^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran meta.parameter.fortran +# ^^^ source.fortran.free meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +> +>! nested labels with whitespaces +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>if (1 > 2) then +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran keyword.logical.fortran.modern +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free +# ^^^^ source.fortran.free keyword.control.then.fortran +> label5: if (1) then +#^^^ source.fortran.free meta.block.if.fortran +# ^^^^^^^ source.fortran.free meta.block.if.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern keyword.control.if.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.expression.control.logical.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern +# ^^^^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern keyword.control.then.fortran +> end if label5 ! +#^^^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.block.if.fortran +# ^^^^^^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern keyword.control.endif.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^^^^^^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.statement.control.if.fortran meta.parameter.fortran +# ^ source.fortran.free meta.block.if.fortran meta.named-construct.fortran.modern meta.statement.control.if.fortran +# ^ source.fortran.free meta.block.if.fortran comment.line.fortran +>else +#^^^^ source.fortran.free meta.block.if.fortran keyword.control.else.fortran +>! whitespace in the "end if label5 " causes else to be incorrect +#^ source.fortran.free meta.block.if.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.block.if.fortran comment.line.fortran +>end if +#^^^^^^ source.fortran.free keyword.control.endif.fortran +> +>! stop +#^ source.fortran.free comment.line.fortran +# ^^^^^ source.fortran.free comment.line.fortran +>if (1) stop +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran +# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran +>if (1) stop label6 +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran +# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran +# ^^^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran meta.label.stop.stop +>if (1) stop "label"//"7" +#^^ source.fortran.free keyword.control.if.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran constant.numeric.fortran +# ^ source.fortran.free meta.expression.control.logical.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran +# ^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.control.stop.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +# ^^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran keyword.other.concatination.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.statement.control.if.fortran meta.statement.control.stop.fortran string.quoted.double.fortran punctuation.definition.string.end.fortran +> +>! do loop +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^ source.fortran.free comment.line.fortran +>do i = 1, 10 +#^^ source.fortran.free meta.block.do.unlabeled.fortran keyword.control.do.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran meta.parameter.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^^ source.fortran.free meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +>end do +#^^^^^^ source.fortran.free meta.block.do.unlabeled.fortran keyword.control.enddo.fortran +> +>! labelled do loop +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>label8: do i = 1, 10 +#^^^^^^^ source.fortran.free +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran keyword.control.do.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran meta.parameter.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran +# ^^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran meta.loop-control.fortran constant.numeric.fortran +>end do label8 +#^^^^^^ source.fortran.free meta.named-construct.fortran.modern meta.block.do.unlabeled.fortran keyword.control.enddo.fortran +# ^ source.fortran.free meta.named-construct.fortran.modern +# ^^^^^^ source.fortran.free meta.label.end.name.fortran +> +> \ No newline at end of file diff --git a/test/resources/fixed_form.F b/test/resources/fixed_form.F new file mode 100644 index 00000000..78d8d4cf --- /dev/null +++ b/test/resources/fixed_form.F @@ -0,0 +1,32 @@ +* euclid.f (FORTRAN 77) +* Find greatest common divisor using the Euclidean algorithm + + PROGRAM EUCLID + PRINT *, 'A?' + READ *, NA + IF (NA.LE.0) THEN + PRINT *, 'A must be a positive integer.' + STOP + END IF + PRINT *, 'B?' + READ *, NB + IF (NB.LE.0) THEN + PRINT *, 'B must be a positive integer.' + STOP + END IF + PRINT *, 'The GCD of', NA, ' and', NB, ' is', NGCD(NA, NB), '.' + STOP + END + + FUNCTION NGCD(NA, NB) + IA = NA + IB = NB + 1 IF (IB.NE.0) THEN + ITEMP = IA + IA = IB + IB = MOD(ITEMP, IB) + GOTO 1 + END IF + NGCD = IA + RETURN + END diff --git a/test/resources/fixed_form.F.snap b/test/resources/fixed_form.F.snap new file mode 100644 index 00000000..51b17b93 --- /dev/null +++ b/test/resources/fixed_form.F.snap @@ -0,0 +1,93 @@ +>* euclid.f (FORTRAN 77) +#^ source.fortran.fixed comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed comment.line.fortran +>* Find greatest common divisor using the Euclidean algorithm +#^ source.fortran.fixed comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed comment.line.fortran +> +> PROGRAM EUCLID +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^ source.fortran.fixed +> PRINT *, 'A?' +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.fixed +> READ *, NA +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^ source.fortran.fixed +> IF (NA.LE.0) THEN +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> PRINT *, 'A must be a positive integer.' +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> STOP +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^ source.fortran.fixed +> END IF +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^ source.fortran.fixed +> PRINT *, 'B?' +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.fixed +> READ *, NB +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^ source.fortran.fixed +> IF (NB.LE.0) THEN +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> PRINT *, 'B must be a positive integer.' +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> STOP +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^ source.fortran.fixed +> END IF +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^ source.fortran.fixed +> PRINT *, 'The GCD of', NA, ' and', NB, ' is', NGCD(NA, NB), '.' +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> STOP +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^ source.fortran.fixed +> END +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^ source.fortran.fixed +> +> FUNCTION NGCD(NA, NB) +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> IA = NA +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^ source.fortran.fixed +> IB = NB +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^ source.fortran.fixed +> 1 IF (IB.NE.0) THEN +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> ITEMP = IA +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.fixed +> IA = IB +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^ source.fortran.fixed +> IB = MOD(ITEMP, IB) +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.fixed +> GOTO 1 +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^ source.fortran.fixed +> END IF +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^ source.fortran.fixed +> NGCD = IA +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^^^^ source.fortran.fixed +> RETURN +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^^^^^^^ source.fortran.fixed +> END +#^^^^^^ source.fortran.fixed constant.numeric.fortran +# ^^^^ source.fortran.fixed +> \ No newline at end of file diff --git a/test/resources/function_subroutine_definitions.f90 b/test/resources/function_subroutine_definitions.f90 new file mode 100644 index 00000000..7d697748 --- /dev/null +++ b/test/resources/function_subroutine_definitions.f90 @@ -0,0 +1,50 @@ +interface function_subroutine_definitions + + ! Normal subroutine + subroutine sub( arg ) + integer, intent(inout) :: arg + end subroutine + + ! Normal functions + integer function fun_integer( arg ) result(val) + integer, intent(inout) :: arg + end function fun_integer + + real function fun_real( arg ) result(val) + integer, intent(inout) :: arg + end function fun_real + + logical function fun_logical( arg ) result(val) + integer, intent(inout) :: arg + end function fun_logical + + character(kind=1, len=100) function fun_character( arg ) result(val) + integer, intent(inout) :: arg + end function fun_character + + double precision function fun_double_precision( arg ) result(val) + integer, intent(inout) :: arg + end function fun_double_precision + + double complex function fun_double_complex( arg ) result(val) + integer, intent(inout) :: arg + end function fun_double_complex + + ! Weird edge cases where the keyword function/subroutine is also used as arguments + function fun_with_fun( function ) + integer, intent(inout) :: function + end function fun_with_fun + + function fun_with_sub( subroutine ) + integer, intent(inout) :: subroutine + end function fun_with_sub + + subroutine sub_with_sub( subroutine ) + integer, intent(inout) :: subroutine + end subroutine sub_with_sub + + subroutine sub_with_fun( function ) + integer, intent(inout) :: function + end subroutine sub_with_fun + +end interface function_subroutine_definitions \ No newline at end of file diff --git a/test/resources/function_subroutine_definitions.f90.snap b/test/resources/function_subroutine_definitions.f90.snap new file mode 100644 index 00000000..b1854c1f --- /dev/null +++ b/test/resources/function_subroutine_definitions.f90.snap @@ -0,0 +1,389 @@ +>interface function_subroutine_definitions +#^^^^^^^^^ source.fortran.free meta.interface.generic.fortran keyword.control.interface.fortran +# ^ source.fortran.free meta.interface.generic.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran entity.name.function.fortran +> +> ! Normal subroutine +#^^ source.fortran.free meta.interface.generic.fortran +# ^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +> subroutine sub( arg ) +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end subroutine +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +> +> ! Normal functions +#^^ source.fortran.free meta.interface.generic.fortran +# ^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +> integer function fun_integer( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_integer +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> real function fun_real( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.real.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_real +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> logical function fun_logical( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.character.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_logical +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> character(kind=1, len=100) function fun_character( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.character.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran variable.parameter.dummy-variable.fortran.modern +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran constant.numeric.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran +# ^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran variable.parameter.dummy-variable.fortran.modern +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran keyword.operator.assignment.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran constant.numeric.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran meta.type-spec.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_character +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> double precision function fun_double_precision( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.double.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_double_precision +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> double complex function fun_double_complex( arg ) result(val) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran storage.type.doublecomplex.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.control.result.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran punctuation.parentheses.right.fortran +> integer, intent(inout) :: arg +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_double_complex +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> ! Weird edge cases where the keyword function/subroutine is also used as arguments +#^^ source.fortran.free meta.interface.generic.fortran +# ^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran comment.line.fortran +> function fun_with_fun( function ) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +> integer, intent(inout) :: function +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_with_fun +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> function fun_with_sub( subroutine ) +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.attribute-list.function.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.function.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +> integer, intent(inout) :: subroutine +#^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end function fun_with_sub +#^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran meta.block.specification.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran keyword.other.endfunction.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.function.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.function.fortran entity.name.function.fortran +> +> subroutine sub_with_sub( subroutine ) +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +> integer, intent(inout) :: subroutine +#^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end subroutine sub_with_sub +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +> subroutine sub_with_fun( function ) +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.end.fortran +> integer, intent(inout) :: function +#^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.intent.in-out.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +> end subroutine sub_with_fun +#^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +> +>end interface function_subroutine_definitions +#^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran keyword.control.endinterface.fortran +# ^ source.fortran.free meta.interface.generic.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.interface.generic.fortran entity.name.function.fortran \ No newline at end of file diff --git a/test/resources/header.h b/test/resources/header.h new file mode 100644 index 00000000..d4786dc6 --- /dev/null +++ b/test/resources/header.h @@ -0,0 +1 @@ +#define Var1 0 \ No newline at end of file diff --git a/test/resources/openacc_support.f90.snap b/test/resources/openacc_support.f90.snap new file mode 100644 index 00000000..4d328f10 --- /dev/null +++ b/test/resources/openacc_support.f90.snap @@ -0,0 +1,213 @@ +>!Made-up directives to test OpenACC support +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>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 +> implicit none +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> !The highlighting should continue on the second line +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc data copy(A) copyin(B(:)) copyout(C(1:N)) present(D) & +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc& no_create(E) deviceptr(F) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc parallel loop private(foo) firstprivate(bar) tile(32,32) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc parallel +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop collapse(2) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end parallel +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc end data +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc kernels default(present) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop independent +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop reduction(+:sum) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop reduction(max:the_max) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop gang worker vector +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop gang(128) worker(4) vector(128) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc loop seq +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end kernels +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc parallel loop num_gangs(1) num_workers(1) vector_length(1) default(none) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc enter data create(A(1:N)) attach(B) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc update device(A) async +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc update host(A(1:N)) async(1) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc update self(A(:)) async(2) wait(1) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc wait(1) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc wait +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc exit data delete(A) detach(B) finalize +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc serial self(.TRUE.) if(.FALSE.) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc host_data use_device(A) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end host_data +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc declare device_resident(A) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc init device_type(foo) device_num(bar) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc shutdown device_type(foo) device_num(bar) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc set default_async(1) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !$acc cache(A(:)) +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> ! Test all four forms of atomic +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc atomic capture +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end atomic +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc atomic update +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end atomic +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc atomic read +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end atomic +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc atomic write +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc end atomic +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> +> !The "do" should not highlight, if it does it's coming from OpenMP +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$acc parallel do +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !The "do" here still should, since it is OpenMP +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +> !$omp parallel do +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.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/preprocessor.F90 b/test/resources/preprocessor.F90 new file mode 100644 index 00000000..eddd2a89 --- /dev/null +++ b/test/resources/preprocessor.F90 @@ -0,0 +1,139 @@ +#if defined(PETSC_USING_F90) && !defined(PETSC_USE_FORTRANKIND) +#define PetscObjectState 1 +#elif defined(PETSC_USING_F90) || !defined(PETSC_USE_FORTRANKIND) +#define PetscObjectState 0 +#endif /* a comment */ + +#define zoltan_mpi_id_datatype_name "MPI_UNSIGNED" +#define ZOLTAN_ID_CONSTANT(z) z + +! Testing C++ numeric literals +#if defined(__STDC_VERSION__) +# if (__STDC_VERSION__ >= 199901L) +# define ZOLTAN_GNO_SPEC "%zd" +# else +# define ZOLTAN_GNO_SPEC "%ld" +# endif +#else +# define ZOLTAN_GNO_SPEC "%ld" +#endif + +#if defined (__sun) || defined(MSOL2) || defined (ARCH_SOL2) +#define CHOLMOD_SOL2 +#define CHOLMOD_ARCHITECTURE "Sun Solaris" + +#elif defined (__linux) || defined(MGLNX86) || defined (ARCH_GLNX86) +#define CHOLMOD_LINUX +#define CHOLMOD_ARCHITECTURE "Linux" + +#elif defined(__APPLE__) +#define CHOLMOD_MAC +#define CHOLMOD_ARCHITECTURE "Mac" + +#else +! /* If the architecture is unknown, and you call the BLAS, you may need to */ +! /* define BLAS_BY_VALUE, BLAS_NO_UNDERSCORE, and/or BLAS_CHAR_ARG yourself. */ +#define CHOLMOD_ARCHITECTURE "unknown" +#endif + +program main + implicit none + + + type logical_vector +#ifdef DEBUG + logical, dimension(:), pointer :: ptr=>null() +#else + logical, dimension(:), pointer :: ptr +#endif + end type logical_vector + + real & +#ifdef DEBUG + , target, +#endif + :: val(3) + +! Tests ifndef, include, endif, define +#ifndef Var1 +#include "header.h" +#endif +#define Var2 2 + +! Test equality logical operators +#if Var1 == Var2 +#define OP 1 +#elif Var1 != Var2 +#define OP 2 +#elif Var1 <= Var2 +#define OP 3 +#elif Var1 >= Var2 +#define OP 4 +#endif +#undef OP + +! Test comparative logical operators +#if Var1 < Var2 +#define OP 1 +#elif Var1 <= Var2 +#define OP 2 +#endif +#undef OP + +! Test arithmetic operators +#if Var1 == Var1 + 1 +#elif Var1 == Var1 - 1 +#elif Var1 == Var1 * 1 +#elif Var1 == Var1 / 1 +#endif + +! Test line continuation +#if !defined( \ + PETSC_USING_F90) \ +&& \ +!defined(PETSC_USE_FORTRANKIND) +#define Var3 \ + 1 +#undef \ + Var1 +#endif + +! --------------------! +! and : && ! valid ! +! bitand: & ! valid ! +! bitor : | ! valid ! +! not : ! ! valid ! +! not_eq: != ! valid ! +! or : || ! valid ! +! xor : ^ ! valid ! +! compl : ~ ! valid ! +! --------------------! +#if 2 | -3 +print*, 'OR (|) operator' +#endif + +#if 2 ^ -3 +print*, 'XOR (^) operator' +#endif + +#if 2&2 +print*, 'AND (&) operator' +#endif + +#if !(2&-3) +print*, 'NOT (!) operator' +#endif + +#if 2 != 3 +print*, 'NOT EQUAL (!=) operator' +#endif + +#if ~2 == -3 +print*, 'complement (~) operator' +#endif + +! and_eq , &= ! not valid +! or_eq , |= ! not valid +! xor_eq , ^= ! not valid + +end program main \ No newline at end of file diff --git a/test/resources/preprocessor.F90.snap b/test/resources/preprocessor.F90.snap new file mode 100644 index 00000000..ff40ba4a --- /dev/null +++ b/test/resources/preprocessor.F90.snap @@ -0,0 +1,659 @@ +>#if defined(PETSC_USING_F90) && !defined(PETSC_USE_FORTRANKIND) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.and.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +>#define PetscObjectState 1 +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#elif defined(PETSC_USING_F90) || !defined(PETSC_USE_FORTRANKIND) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^ source.fortran.free meta.preprocessor +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor +# ^^ source.fortran.free meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.or.fortran +# ^ source.fortran.free meta.preprocessor +# ^ source.fortran.free meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor +>#define PetscObjectState 0 +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#endif /* a comment */ +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.endif.fortran +# ^ source.fortran.free meta.preprocessor +# ^^ source.fortran.free meta.preprocessor comment.preprocessor +# ^^^^^^^^^^^ source.fortran.free meta.preprocessor comment.preprocessor +# ^^ source.fortran.free meta.preprocessor comment.preprocessor +> +>#define zoltan_mpi_id_datatype_name "MPI_UNSIGNED" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +>#define ZOLTAN_ID_CONSTANT(z) z +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +> +>! Testing C++ numeric literals +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>#if defined(__STDC_VERSION__) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +># if (__STDC_VERSION__ >= 199901L) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.more_eq.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.other.unit.suffix.integer.cpp +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +># define ZOLTAN_GNO_SPEC "%zd" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +># else +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.else.fortran +># define ZOLTAN_GNO_SPEC "%ld" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +># endif +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor +# ^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.endif.fortran +>#else +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.else.fortran +># define ZOLTAN_GNO_SPEC "%ld" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +>#endif +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if defined (__sun) || defined(MSOL2) || defined (ARCH_SOL2) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.or.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.or.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.conditional.fortran +>#define CHOLMOD_SOL2 +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +>#define CHOLMOD_ARCHITECTURE "Sun Solaris" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +> +>#elif defined (__linux) || defined(MGLNX86) || defined (ARCH_GLNX86) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^ source.fortran.free meta.preprocessor +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^ source.fortran.free meta.preprocessor +# ^^ source.fortran.free meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.or.fortran +# ^ source.fortran.free meta.preprocessor +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^ source.fortran.free meta.preprocessor +# ^^ source.fortran.free meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.or.fortran +# ^ source.fortran.free meta.preprocessor +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor +>#define CHOLMOD_LINUX +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +>#define CHOLMOD_ARCHITECTURE "Linux" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +> +>#elif defined(__APPLE__) +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^ source.fortran.free meta.preprocessor +# ^^^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^ source.fortran.free meta.preprocessor +>#define CHOLMOD_MAC +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +>#define CHOLMOD_ARCHITECTURE "Mac" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +> +>#else +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.else.fortran +>! /* If the architecture is unknown, and you call the BLAS, you may need to */ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>! /* define BLAS_BY_VALUE, BLAS_NO_UNDERSCORE, and/or BLAS_CHAR_ARG yourself. */ +#^ source.fortran.free comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran +>#define CHOLMOD_ARCHITECTURE "unknown" +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^^^^^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.preprocessor meta.preprocessor.macro.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +>#endif +#^ source.fortran.free meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>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 +> implicit none +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.none.fortran +> +> +> type logical_vector +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran entity.name.type.fortran +>#ifdef DEBUG +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.ifdef.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor +> logical, dimension(:), pointer :: ptr=>null() +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.character.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.dimension.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran keyword.other.point.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran support.function.intrinsic.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran punctuation.parentheses.right.fortran +>#else +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.else.fortran +> logical, dimension(:), pointer :: ptr +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.character.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.dimension.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran meta.parameter.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> end type logical_vector +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran entity.name.type.fortran +> +> real & +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.line-continuation.fortran +>#ifdef DEBUG +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.preprocessor keyword.control.preprocessor.ifdef.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.preprocessor +> , target, +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.target.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> :: val(3) +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +> +>! Tests ifndef, include, endif, define +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#ifndef Var1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.ifndef.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +>#include "header.h" +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.include.fortran keyword.control.preprocessor.include.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.include.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.include.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.begin.preprocessor.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.include.fortran string.quoted.double.include.preprocessor.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.include.fortran string.quoted.double.include.preprocessor.fortran punctuation.definition.string.end.preprocessor.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +>#define Var2 2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +> +>! Test equality logical operators +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#if Var1 == Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +>#define OP 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#elif Var1 != Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not_equals.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +>#define OP 2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#elif Var1 <= Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.less_eq.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +>#define OP 3 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#elif Var1 >= Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.more_eq.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +>#define OP 4 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +>#undef OP +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran keyword.control.preprocessor.undef.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran +> +>! Test comparative logical operators +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#if Var1 < Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.less.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +>#define OP 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#elif Var1 <= Var2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.less_eq.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +>#define OP 2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +>#undef OP +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran keyword.control.preprocessor.undef.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran +> +>! Test arithmetic operators +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#if Var1 == Var1 + 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.addition.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>#elif Var1 == Var1 - 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.subtraction.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor constant.numeric.decimal.cpp +>#elif Var1 == Var1 * 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.multiplication.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor constant.numeric.decimal.cpp +>#elif Var1 == Var1 / 1 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.elif.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.operator.division.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor constant.numeric.decimal.cpp +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>! Test line continuation +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#if !defined( \ +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.character.escape.line-continuation.preprocessor.fortran +> PETSC_USING_F90) \ +#^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.character.escape.line-continuation.preprocessor.fortran +>&& \ +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.and.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.character.escape.line-continuation.preprocessor.fortran +>!defined(PETSC_USE_FORTRANKIND) +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.defined.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +>#define Var3 \ +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran keyword.control.preprocessor.define.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.character.escape.line-continuation.preprocessor.fortran +> 1 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.macro.fortran constant.numeric.decimal.cpp +>#undef \ +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran keyword.control.preprocessor.undef.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran constant.character.escape.line-continuation.preprocessor.fortran +> Var1 +#^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.undef.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>! --------------------! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! and : && ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! bitand: & ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! bitor : | ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! not : ! ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! not_eq: != ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! or : || ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! xor : ^ ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! compl : ~ ! valid ! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! --------------------! +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>#if 2 | -3 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.bitor.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.subtraction.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>print*, 'OR (|) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if 2 ^ -3 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.xor.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.subtraction.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>print*, 'XOR (^) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if 2&2 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.bitand.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>print*, 'AND (&) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if !(2&-3) +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.bitand.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.subtraction.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +>print*, 'NOT (!) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if 2 != 3 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.not_equals.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>print*, 'NOT EQUAL (!=) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>#if ~2 == -3 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.control.preprocessor.if.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.complementary.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.logical.preprocessor.fortran keyword.operator.logical.preprocessor.equals.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran keyword.operator.subtraction.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor meta.preprocessor.conditional.fortran constant.numeric.decimal.cpp +>print*, 'complement (~) operator' +#^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran string.quoted.single.fortran punctuation.definition.string.end.fortran +>#endif +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.indicator.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.preprocessor keyword.control.preprocessor.endif.fortran +> +>! and_eq , &= ! not valid +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! or_eq , |= ! not valid +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +>! xor_eq , ^= ! not valid +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.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/sample.f90.snap b/test/resources/sample.f90.snap index 8c9ca1ff..6c4d013b 100644 --- a/test/resources/sample.f90.snap +++ b/test/resources/sample.f90.snap @@ -3,55 +3,55 @@ # ^ 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 +#^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran comment.line.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list 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 +#^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran > > >end program main diff --git a/test/resources/select_case.f90.snap b/test/resources/select_case.f90.snap index 80589b7d..20603c4a 100644 --- a/test/resources/select_case.f90.snap +++ b/test/resources/select_case.f90.snap @@ -16,160 +16,160 @@ # ^ 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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.selectcase.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.control.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.case.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 diff --git a/test/resources/select_rank.f90.snap b/test/resources/select_rank.f90.snap index c078b673..ba094dd2 100644 --- a/test/resources/select_rank.f90.snap +++ b/test/resources/select_rank.f90.snap @@ -20,518 +20,518 @@ # ^ 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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.dimension.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran constant.numeric.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran keyword.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.control.call.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list 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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.control.return.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.attribute-list.subroutine.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran entity.name.function.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list punctuation.definition.parameters.begin.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list variable.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.first-line.fortran keyword.dummy-variable-list 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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.specification.type.fortran meta.name-list.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.parameter.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.selectrank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.right.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran comment.line.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran constant.numeric.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.assignment.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.block.select.rank.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran meta.statement.control.return.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran meta.block.specification.subroutine.fortran +# ^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran keyword.other.endsubroutine.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.contains.fortran meta.subroutine.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 diff --git a/test/resources/select_type.f90.snap b/test/resources/select_type.f90.snap index b4b9b066..34f58190 100644 --- a/test/resources/select_type.f90.snap +++ b/test/resources/select_type.f90.snap @@ -16,391 +16,391 @@ # ^ 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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.statement.implicit.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran storage.modifier.extends.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.real.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran storage.modifier.extends.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.attribute-list.derived-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran storage.type.integer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.attribute-list.derived-type-component-type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-type.fortran meta.name-list.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran meta.block.specification.derived-type.fortran meta.specification.derived-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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran keyword.control.endtype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.derived-type.definition.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.target.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.target.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran storage.type.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran entity.name.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.specification.type.derived.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran punctuation.comma.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran storage.modifier.pointer.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.attribute-list.type-specification-statements.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran keyword.operator.double-colon.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.specification.type.fortran meta.name-list.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.other.point.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.selecttype.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.is.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.left.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran punctuation.parentheses.right.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran comment.line.fortran +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran meta.parameter.fortran keyword.other.selector.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.class.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.print.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.operator.power.fortran +# ^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran string.quoted.double.fortran punctuation.definition.string.begin.fortran +# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran string.quoted.double.fortran +# ^ source.fortran.free meta.program.fortran meta.block.specification.program.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 +#^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran +# ^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.program.fortran meta.block.select.type.fortran keyword.control.endselect.fortran > > >end program select_type_test diff --git a/test/runTest.ts b/test/runTest.ts new file mode 100644 index 00000000..b5d642b1 --- /dev/null +++ b/test/runTest.ts @@ -0,0 +1,25 @@ +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../'); + + // The path to the extension test runner script + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './index'); + + const launchArgs = ["--disable-extensions", "--install-extension ms-vscode.cpptools"]; + // Download VS Code, unzip it and run the integration test + await runTests({ launchArgs, extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error(err); + console.error('Failed to run tests'); + process.exit(1); + } +} + +main(); diff --git a/test/tokenizer.test.ts b/test/tokenizer.test.ts index e9a76a7b..b8adcd07 100644 --- a/test/tokenizer.test.ts +++ b/test/tokenizer.test.ts @@ -6,12 +6,12 @@ import { Tokenizer, TokenType } from '../src/lib/tokenizer'; suite("fortran tokenizer", () => { - test("get correct amount of tokens", () => { - const fortranTokenizer = constructFortranTokenizer(); - fortranTokenizer.tokenize("function a( m, n)\n 2 + 3\nend"); - let tokens = fortranTokenizer.tokens; - assert.equal(tokens.length, 11); - }); + test("get correct amount of tokens", () => { + const fortranTokenizer = constructFortranTokenizer(); + fortranTokenizer.tokenize("function a( m, n)\n 2 + 3\nend"); + let tokens = fortranTokenizer.tokens; + assert.strictEqual(tokens.length, 11); + }); }); function constructFortranTokenizer() { @@ -28,4 +28,4 @@ function constructFortranTokenizer() { tokenizer.add(/^,\s*/, TokenType.COMMA); // comma separator tokenizer.add(/[+\-*\/]\s*/, TokenType.BINARY_OPERATOR); // operators return tokenizer; -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index 43882369..2c787488 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,10 @@ "rootDir": ".", "resolveJsonModule": true }, + "include": [ + "src/**/*.ts", + "src/docs/**/*.json", + ], "exclude": [ "node_modules", ".vscode-test" diff --git a/tsconfig.prod.json b/tsconfig.prod.json new file mode 100644 index 00000000..ae79cf22 --- /dev/null +++ b/tsconfig.prod.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "lib": [ + "es6" + ], + "sourceMap": false, + "removeComments": true, + "rootDir": ".", + "resolveJsonModule": true + }, + "include": [ + "src/**/*.ts", + "src/docs/**/*.json", + ], + "exclude": [ + "node_modules", + ".vscode-test" + ] +} \ No newline at end of file diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 00000000..4e7122cc --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "lib": [ + "es6" + ], + "sourceMap": true, + "rootDir": ".", + "resolveJsonModule": true + }, + "include": [ + "test/**/*.ts", + "syntaxes/*.json", + ], + "exclude": [ + "node_modules", + ".vscode-test" + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 23db03ed..5c3f0533 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,70 +2,89 @@ # yarn lockfile v1 -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== +"@babel/code-frame@^7.0.0": + version "7.15.8" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" + integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== + dependencies: + "@babel/highlight" "^7.14.5" + +"@babel/helper-validator-identifier@^7.14.5": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: - any-observable "^0.3.0" + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/fs-extra@0.0.35": - version "0.0.35" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-0.0.35.tgz#3ed400c0122fb161db51da23d96ba5040cb9c7d9" - integrity sha1-PtQAwBIvsWHbUdoj2WulBAy5x9k= - dependencies: - "@types/node" "*" - -"@types/glob@^5.0.30": - version "5.0.36" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.36.tgz#0c80a9c8664fc7d19781de229f287077fd622cb2" - integrity sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg== +"@types/glob@^7.1.4": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" + integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== dependencies: - "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" "@types/minimatch@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" - integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== - -"@types/mocha@^2.2.32": - version "2.2.48" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab" - integrity sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/mocha@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297" + integrity sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA== + +"@types/node@*": + version "16.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" + integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== + +"@types/node@^15.14.9": + version "15.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" + integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/node@*", "@types/node@^15.12.1": - version "15.12.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.1.tgz#9b60797dee1895383a725f828a869c86c6caa5c2" - integrity sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw== +"@types/vscode@^1.30.0": + version "1.61.0" + resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.61.0.tgz#c54335b6f84c19c69b1435b17cc0ce3b2cecfeec" + integrity sha512-9k5Nwq45hkRwdfCFY+eKXeQQSbPoA114mF7U/4uJXRBJeGIO7MuJdhF1PnaDN+lllL9iKGQtd6FFXShBXMNaFg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +"@types/which@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.1.tgz#27ecd67f915b7c3d6ba552135bb1eecd66e63501" + integrity sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ== -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== +"@vscode/test-electron@^1.6.2": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-1.6.2.tgz#f639cab19a0013949015079dcfd2ff0c1aa88a1b" + integrity sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ== dependencies: - es6-promisify "^5.0.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + rimraf "^3.0.2" + unzipper "^0.10.11" agent-base@6: version "6.0.2" @@ -74,61 +93,52 @@ agent-base@6: dependencies: debug "4" -amdefine@>=0.0.4, amdefine@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - string-width "^2.0.0" + clean-stack "^2.0.0" + indent-string "^4.0.0" -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@4.1.1, ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - ansi-wrap "0.1.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + type-fest "^0.21.3" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-wrap@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" argparse@^1.0.7: version "1.0.10" @@ -137,100 +147,43 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async@1.x: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -babel-code-frame@^6.20.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== +big-integer@^1.6.17: + version "1.6.50" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.50.tgz#299a4be8bd441c73dcc492ed46b7169c34e92e70" + integrity sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" + buffers "~0.1.1" + chainsaw "~0.1.0" -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= brace-expansion@^1.1.7: version "1.1.11" @@ -240,106 +193,51 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +buffer-indexof-polyfill@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + traverse ">=0.3.0 <0.4" -chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, 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== @@ -348,68 +246,57 @@ chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + restore-cursor "^3.1.0" -cli-cursor@^2.0.0, cli-cursor@^2.1.0: +cli-truncate@2.1.0, cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - restore-cursor "^2.0.0" + slice-ansi "^3.0.0" + string-width "^4.2.0" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= - -clone@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" color-convert@^1.9.0: version "1.9.3" @@ -418,554 +305,222 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@^1.1.2: +colorette@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - integrity sha1-+mihT2qUXVTbvlDYzbMyDp47GgY= - -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -commander@2.3.0: - version "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.20.3, commander@^2.9.0: +commander@^2.12.1, commander@^2.20.3: 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== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +commander@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.2.0.tgz#37fe2bde301d87d47a53adeff8b5915db1381ca8" + integrity sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -configstore@^3.0.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f" - integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA== - dependencies: - dot-prop "^4.2.1" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.2, cosmiconfig@^5.0.7: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -dateformat@^1.0.11: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -debug@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= - dependencies: - ms "0.7.1" - -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@4, debug@4.3.2, debug@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decache@^4.1.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/decache/-/decache-4.6.0.tgz#87026bc6e696759e82d57a3841c4e251a30356e8" - integrity sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w== - dependencies: - callsite "^1.0.0" - -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -diff@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8= +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -diff@3.5.0, diff@^3.0.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diff@^4.0.2: +diff@^4.0.1, 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" - integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== - dependencies: - is-obj "^1.0.0" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= - dependencies: - readable-stream "~1.1.9" - -duplexer3@^0.1.4: +duplexer2@~0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - once "^1.4.0" + ansi-colors "^4.1.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" - integrity sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE= +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" - integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA== - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fancy-log@^1.1.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -find-parent-dir@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.1.tgz#c5c385b96858c3351f95d446cab866cbf9f11125" - integrity sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A== - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= - dependencies: - glob "~5.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - map-cache "^0.2.2" + locate-path "^6.0.0" + path-exists "^4.0.0" -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - integrity sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0= +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - inherits "2" - minimatch "0.3" + is-glob "^4.0.1" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -974,21 +529,10 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15, glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -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== +glob@^7.1.1, glob@^7.1.3, glob@^7.1.6, glob@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -997,149 +541,25 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +graceful-fs@^4.1.2, graceful-fs@^4.2.2: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - integrity sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8= - -gulp-util@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" - integrity sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs= - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^1.0.11" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - -handlebars@^4.0.1: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= - dependencies: - sparkles "^1.0.0" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has@^1.0.3: version "1.0.3" @@ -1148,23 +568,10 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== http-proxy-agent@^4.0.1: version "4.0.1" @@ -1175,14 +582,6 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -1191,51 +590,28 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -husky@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-1.3.1.tgz#26823e399300388ca2afff11cfa8a86b0033fae0" - integrity sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg== - dependencies: - cosmiconfig "^5.0.7" - execa "^1.0.0" - find-up "^3.0.0" - get-stdin "^6.0.0" - is-ci "^2.0.0" - pkg-dir "^3.0.0" - please-upgrade-node "^3.1.1" - read-pkg "^4.0.1" - run-node "^1.0.0" - slash "^2.0.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-lazy@^2.1.0: +human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +husky@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff" + integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg== -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - repeating "^2.0.0" + parent-module "^1.0.0" + resolve-from "^4.0.0" -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" @@ -1245,226 +621,78 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@~2.0.0, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - ci-info "^2.0.0" + binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -1474,67 +702,19 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -istanbul@0.4.5, istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -jade@0.26.3: - version "0.26.3" - resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" - integrity sha1-jxDXl32NefL2/4YqgbBRPMslaGw= - dependencies: - commander "0.6.1" - mkdirp "0.3.0" - -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== - -jest-validate@^23.5.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.6.0" - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.x, js-yaml@^3.13.1: +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -1542,884 +722,275 @@ js-yaml@3.x, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.2.3.tgz#fc3f4569cc4f46553309dfc1447b8aef69f744fb" + integrity sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw== + dependencies: + cli-truncate "2.1.0" + colorette "^1.4.0" + commander "^8.2.0" + cosmiconfig "^7.0.1" + debug "^4.3.2" + enquirer "^2.3.6" + execa "^5.1.1" + listr2 "^3.12.2" + micromatch "^4.0.4" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "3.3.0" + supports-color "8.1.1" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= + +listr2@^3.12.2: + version "3.12.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.2.tgz#2d55cc627111603ad4768a9e87c9c7bb9b49997e" + integrity sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A== + dependencies: + cli-truncate "^2.1.0" + colorette "^1.4.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.7" + through "^2.3.8" + wrap-ansi "^7.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - is-buffer "^1.1.5" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" -kind-of@^4.0.0: +log-update@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: - package-json "^4.0.0" + braces "^3.0.1" + picomatch "^2.2.3" -leven@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lint-staged@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d" - integrity sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw== - dependencies: - chalk "^2.3.1" - commander "^2.14.1" - cosmiconfig "^5.0.2" - debug "^3.1.0" - dedent "^0.7.0" - execa "^0.9.0" - find-parent-dir "^0.3.0" - is-glob "^4.0.0" - is-windows "^1.0.2" - jest-validate "^23.5.0" - listr "^0.14.1" - lodash "^4.17.5" - log-symbols "^2.2.0" - micromatch "^3.1.8" - npm-which "^3.0.1" - p-map "^1.1.1" - path-is-inside "^1.0.2" - pify "^3.0.0" - please-upgrade-node "^3.0.2" - staged-git-files "1.1.1" - string-argv "^0.0.2" - stringify-object "^3.2.2" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.1: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= - dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash@^4.17.5: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -micromatch@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0= - dependencies: - lru-cache "2" - sigmund "~1.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= - -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@0.5.x: +"mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - minimist "^1.2.5" - -mocha@^2.3.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" - integrity sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg= - dependencies: - commander "2.3.0" - debug "2.2.0" - diff "1.4.0" - escape-string-regexp "1.0.2" - glob "3.2.11" - growl "1.9.2" - jade "0.26.3" - mkdirp "0.5.1" - supports-color "1.2.0" - to-iso-string "0.0.2" - -mocha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== - dependencies: - browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.5" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg= - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= - dependencies: - duplexer2 "0.0.2" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -npm-path@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" - integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== - dependencies: - which "^1.2.10" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" + minimist "^1.2.5" -npm-which@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" - integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= +mocha@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" + integrity sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw== dependencies: - commander "^2.9.0" - npm-path "^2.0.2" - which "^1.2.10" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.2" + debug "4.3.2" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.25" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.1.5" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" +nanoid@3.1.25: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - isobject "^3.0.1" + path-key "^3.0.0" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - p-limit "^2.0.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + mimic-fn "^2.1.0" -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + yocto-queue "^0.1.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - error-ex "^1.2.0" + p-limit "^3.0.2" -parse-json@^4.0.0: +p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + aggregate-error "^3.0.0" -parse-node-version@^1.0.0: +parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: - pinkie-promise "^2.0.0" + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pify@^2.0.0: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: +please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -rc@^1.0.1, rc@^1.1.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= - dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" - -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" + safe-buffer "^5.1.0" -readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -2432,86 +1003,24 @@ readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= - dependencies: - rc "^1.0.1" - -remap-istanbul@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.8.4.tgz#b4bfdfdbc90efa635e9a28b1f4a116e22c8c2697" - integrity sha1-tL/f28kO+mNemiix9KEW4iyMJpc= - dependencies: - amdefine "^1.0.0" - gulp-util "3.0.7" - istanbul "0.4.5" - source-map ">=0.5.6" - through2 "2.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + picomatch "^2.2.1" -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.1.7, resolve@^1.10.0: +resolve@^1.3.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -2519,32 +1028,36 @@ resolve@^1.1.7, resolve@^1.10.0: is-core-module "^2.2.0" path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +rimraf@2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" -rxjs@^6.3.3: +rxjs@^6.6.7: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1: +safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2554,230 +1067,81 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0: +semver@^5.3.0, semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + randombytes "^2.1.0" -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -slash@^2.0.0: +shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.0: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@>=0.5.6: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= - dependencies: - amdefine ">=0.0.4" - -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" + shebang-regex "^3.0.0" -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.5" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" + integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== -spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - extend-shallow "^3.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -staged-git-files@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b" - integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -string-argv@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" - integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" string_decoder@~1.1.1: version "1.1.1" @@ -2786,7 +1150,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.2.2: +stringify-object@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== @@ -2795,67 +1159,29 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^3.0.0" + ansi-regex "^5.0.1" -strip-bom@^2.0.0: +strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - integrity sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4= - -supports-color@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - has-flag "^1.0.0" + has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" @@ -2864,206 +1190,92 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - -through2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" - integrity sha1-OE51MU1J8y3hLuu4E2uOtrXVnak= - dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -to-iso-string@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" - integrity sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - kind-of "^3.0.2" + has-flag "^4.0.0" -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + is-number "^7.0.0" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= -tslib@^1.9.0: +tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslint@^4.0.2: - version "4.5.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.5.1.tgz#05356871bef23a434906734006fc188336ba824b" - integrity sha1-BTVocb7yOkNJBnNABvwYgza6gks= +tslint@^5.20.1: + version "5.20.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" + integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== dependencies: - babel-code-frame "^6.20.0" - colors "^1.1.2" - diff "^3.0.1" - findup-sync "~0.3.0" + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^4.0.1" glob "^7.1.1" - optimist "~0.6.0" - resolve "^1.1.7" - tsutils "^1.1.0" - update-notifier "^2.0.0" - -tsutils@^1.1.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0" - integrity sha1-ufmrROVa+WgYMdXyjQrur1x1DLA= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -typescript@^3.5.1: - version "3.9.9" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" - integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== - -uglify-js@^3.1.4: - version "3.13.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.9.tgz#4d8d21dcd497f29cfd8e9378b9df123ad025999b" - integrity sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -update-notifier@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + js-yaml "^3.13.1" + minimatch "^3.0.4" + mkdirp "^0.5.1" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^3.9.10: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + +unzipper@^0.10.11: + version "0.10.11" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" + integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + graceful-fs "^4.2.2" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - vscode-jsonrpc@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" @@ -3095,14 +1307,6 @@ vscode-oniguruma@^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" - integrity sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w== - dependencies: - 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" @@ -3120,81 +1324,85 @@ vscode-tmgrammar-test@^0.0.11: 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" - integrity sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg== - dependencies: - glob "^7.1.2" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - mocha "^5.2.0" - semver "^5.4.1" - source-map-support "^0.5.0" - vscode-test "^0.4.1" - -which@^1.1.1, which@^1.2.10, which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==