From bb0e626802606ecf652323feb8af3a4a184fa74e Mon Sep 17 00:00:00 2001 From: Bill Buffet Date: Wed, 29 Nov 2023 11:26:14 +0000 Subject: [PATCH 01/29] add codespaces config --- .devcontainer/devcontainer.json | 11 ++ tutorail/README.md | 10 ++ tutorail/notebook/go_analysis.ipynb | 207 ++++++++++++++++++++++++++++ 3 files changed, 228 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 tutorail/README.md create mode 100644 tutorail/notebook/go_analysis.ipynb diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..46a45139 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,11 @@ +{ + "image": "ghcr.io/lonrun/codefuse-query-tutorial:0.5", + "hostRequirements": { + "cpus": 4 + }, + "customizations": { + "codespaces": { + "openFiles": ["tutorail/README.md"] + } + } + } \ No newline at end of file diff --git a/tutorail/README.md b/tutorail/README.md new file mode 100644 index 00000000..bb40c2f1 --- /dev/null +++ b/tutorail/README.md @@ -0,0 +1,10 @@ +## CodeQuery使用教程 + +你可以使用Github codespace 来体验CodeQuery的能力。 + +### 使用步骤 + +- 1. 在项目主页切换到 main 分支 +- 2. 打开项目 Code/Codespaces +- 3. 打开 Codespace 后,切换至项目tutorail/notebook下 +- 4. 选择示例下的 jupyter notebook 分析教程,开始体验吧 diff --git a/tutorail/notebook/go_analysis.ipynb b/tutorail/notebook/go_analysis.ipynb new file mode 100644 index 00000000..f9b2ac64 --- /dev/null +++ b/tutorail/notebook/go_analysis.ipynb @@ -0,0 +1,207 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这是一个使用CodeFuse-Query分析Go项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "检查cli是否就绪" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!which sparrow" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 0: 克隆要分析的仓库。我们以 [gorm](https://github.com/go-gorm/gorm.git) 项目为例。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-22T08:30:58.387715Z", + "start_time": "2023-11-22T08:30:44.572634Z" + } + }, + "outputs": [], + "source": [ + "!git clone https://github.com/go-gorm/gorm.git" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的gorm子目录),分析的语言(go),以及db文件的存储路径(放置在当前目录下的/db/gorm)。执行该命令之后,竟会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:46:32.220317Z", + "start_time": "2023-11-23T03:46:12.785705Z" + } + }, + "outputs": [], + "source": [ + "!sparrow database create --source-root gorm --data-language-type go --output ./db/gorm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,直接运行分析脚本。在命令行中,你可以使用 `sparrow query run` 命令来执行查询脚本,具体可以使用`sparrow query run -h` 来获取详细参数信息。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "示例 查询 [gorm](https://github.com/go-gorm/gorm.git) 的文件代码复杂度信息。\n", + "\n", + "第一行通过内核魔法命令指定分析的db路径,后面写查询文件代码复杂度Godel脚本。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%db ./db/gorm\n", + "// script\n", + "use coref::go::*\n", + "\n", + "fn default_db() -> GoDB {\n", + " return GoDB::load(\"coref_go_src.db\")\n", + "}\n", + "\n", + "/**\n", + " * @param name: 文件名\n", + " * @param func: 函数名\n", + " * @param cmplx: 函数圈复杂度\n", + " * @param sl,el,sc,ec: 函数位置信息,依次为函数起始行,结束行\n", + " */\n", + "fn out(name: string, func: string, cmplx: int, sl: int, el: int) -> bool {\n", + " for(f in GoFile(default_db()), function in Function(default_db())) {\n", + " if ((!f.isAutoGenereatedFile()) &&\n", + " f.key_eq(function.getBelongsFile()) &&\n", + " name = f.getName() &&\n", + " func = function.getName() &&\n", + " cmplx = function.getCyclomaticComplexity() &&\n", + " sl = function.getLocation().getStartLineNumber() &&\n", + " el = function.getLocation().getEndLineNumber()) {\n", + " return true\n", + " }\n", + " }\n", + "}\n", + "\n", + "fn main() {\n", + " output(out())\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "保存上一次运行的 query 结果保存到一个JSON文件" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%save_to ./out/query.json" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 3: 好了,你可以针对分析生成的结果,进行进一步的代码分析了,比如你可以结合pandas库,使用刚刚生成的 query.json 实现最大函数复杂度的排序查询:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:54:56.998681Z", + "start_time": "2023-11-23T03:54:56.976694Z" + }, + "collapsed": false + }, + "outputs": [], + "source": [ + "%%python\n", + "import pandas as pd\n", + "data = pd.read_json('./out/query.json')\n", + "data.sort_values('cmplx', ascending=False, inplace=True)\n", + "top_10 = data.head(10)\n", + "print(top_10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Enjoy!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Godel kernel", + "language": "rust", + "name": "godel-jupyter" + }, + "language_info": { + "file_extension": ".gdl", + "help_links": [ + { + "text": "Godel kernel Magics", + "url": "https://sparrow.alipay.com" + } + ], + "mimetype": "text/rust", + "name": "rust", + "version": "0.0.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 564ed98fbd313b394c988010d445a35214c97d96 Mon Sep 17 00:00:00 2001 From: Bill Buffet Date: Wed, 29 Nov 2023 11:45:06 +0000 Subject: [PATCH 02/29] update readme for tutorail --- tutorail/README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tutorail/README.md b/tutorail/README.md index bb40c2f1..5875cee0 100644 --- a/tutorail/README.md +++ b/tutorail/README.md @@ -1,10 +1,13 @@ ## CodeQuery使用教程 -你可以使用Github codespace 来体验CodeQuery的能力。 +### 使用Github codespace 来体验CodeQuery分析能力 -### 使用步骤 +#### 步骤 -- 1. 在项目主页切换到 main 分支 -- 2. 打开项目 Code/Codespaces -- 3. 打开 Codespace 后,切换至项目tutorail/notebook下 -- 4. 选择示例下的 jupyter notebook 分析教程,开始体验吧 +- 在项目主页切换到目标分支 +- 创建Codespace,依次点击 Code -> Codespaces,在当前分支创建一个 Codespace +- 创建后,打开 Codespace,加载完成后,切换至项目tutorail/notebook 目录下 +- 选择示例下的 jupyter notebook 分析教程,即可开始体验 + +#### 注意 +- 打开jupyter页面之后,如果是第一次加载容器,你还需要配置教程所使用的内核,在右上角 “选择内核”弹出框中,依次选择 “Juypter Kernel...” -> “Godel Kernel” 即可。 From f993bd081c194cb413356ea46a5e43be1d3d3313 Mon Sep 17 00:00:00 2001 From: Bill Buffet Date: Wed, 29 Nov 2023 11:53:45 +0000 Subject: [PATCH 03/29] update readme & add go analysis tutorail --- tutorail/README.md | 6 +++--- tutorail/notebook/go_analysis.ipynb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tutorail/README.md b/tutorail/README.md index 5875cee0..bb0621fb 100644 --- a/tutorail/README.md +++ b/tutorail/README.md @@ -1,12 +1,12 @@ ## CodeQuery使用教程 -### 使用Github codespace 来体验CodeQuery分析能力 +### 使用Github Codespaces 来体验CodeQuery分析能力 #### 步骤 - 在项目主页切换到目标分支 -- 创建Codespace,依次点击 Code -> Codespaces,在当前分支创建一个 Codespace -- 创建后,打开 Codespace,加载完成后,切换至项目tutorail/notebook 目录下 +- 创建 Codespaces,依次点击 Code -> Codespaces,在当前分支创建一个 Codespaces +- 创建后,打开该 Codespaces,加载完成后,切换至项目tutorail/notebook 目录下 - 选择示例下的 jupyter notebook 分析教程,即可开始体验 #### 注意 diff --git a/tutorail/notebook/go_analysis.ipynb b/tutorail/notebook/go_analysis.ipynb index f9b2ac64..30ae15e2 100644 --- a/tutorail/notebook/go_analysis.ipynb +++ b/tutorail/notebook/go_analysis.ipynb @@ -141,7 +141,7 @@ "metadata": {}, "outputs": [], "source": [ - "%%save_to ./out/query.json" + "%%save_to ./query.json" ] }, { @@ -167,7 +167,7 @@ "source": [ "%%python\n", "import pandas as pd\n", - "data = pd.read_json('./out/query.json')\n", + "data = pd.read_json('query.json')\n", "data.sort_values('cmplx', ascending=False, inplace=True)\n", "top_10 = data.head(10)\n", "print(top_10)" From 4d439909c914e7aec6957afa000f64aed908ee25 Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Thu, 30 Nov 2023 10:58:26 +0800 Subject: [PATCH 04/29] fix typos --- .devcontainer/devcontainer.json | 2 +- {tutorail => tutorial}/README.md | 2 +- {tutorail => tutorial}/notebook/go_analysis.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename {tutorail => tutorial}/README.md (94%) rename {tutorail => tutorial}/notebook/go_analysis.ipynb (99%) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 46a45139..cf953372 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ }, "customizations": { "codespaces": { - "openFiles": ["tutorail/README.md"] + "openFiles": ["tutorial/README.md"] } } } \ No newline at end of file diff --git a/tutorail/README.md b/tutorial/README.md similarity index 94% rename from tutorail/README.md rename to tutorial/README.md index bb0621fb..292c35a3 100644 --- a/tutorail/README.md +++ b/tutorial/README.md @@ -6,7 +6,7 @@ - 在项目主页切换到目标分支 - 创建 Codespaces,依次点击 Code -> Codespaces,在当前分支创建一个 Codespaces -- 创建后,打开该 Codespaces,加载完成后,切换至项目tutorail/notebook 目录下 +- 创建后,打开该 Codespaces,加载完成后,切换至项目 tutorial/notebook 目录下 - 选择示例下的 jupyter notebook 分析教程,即可开始体验 #### 注意 diff --git a/tutorail/notebook/go_analysis.ipynb b/tutorial/notebook/go_analysis.ipynb similarity index 99% rename from tutorail/notebook/go_analysis.ipynb rename to tutorial/notebook/go_analysis.ipynb index 30ae15e2..ba1078d7 100644 --- a/tutorail/notebook/go_analysis.ipynb +++ b/tutorial/notebook/go_analysis.ipynb @@ -167,7 +167,7 @@ "source": [ "%%python\n", "import pandas as pd\n", - "data = pd.read_json('query.json')\n", + "data = pd.read_json('./query.json')\n", "data.sort_values('cmplx', ascending=False, inplace=True)\n", "top_10 = data.head(10)\n", "print(top_10)" From a2952870c07186c75536843c0816d8ec208bb52b Mon Sep 17 00:00:00 2001 From: Xunjin ZHENG Date: Thu, 30 Nov 2023 03:35:42 +0000 Subject: [PATCH 05/29] add jupyter extension to be installed when in dev container --- .devcontainer/devcontainer.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index cf953372..3d71c912 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,6 +6,11 @@ "customizations": { "codespaces": { "openFiles": ["tutorial/README.md"] + }, + // Configure properties specific to VS Code. + "vscode": { + // Add the IDs of extensions you want installed when the container is created. + "extensions": ["ms-toolsai.jupyter"] } } } \ No newline at end of file From ceef2b3440d381b7f37f1cd6d2f0a7d2a20c1344 Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Thu, 30 Nov 2023 15:02:08 +0800 Subject: [PATCH 06/29] add python&xml tutorial and fix typos --- .devcontainer/devcontainer.json | 2 +- tutorial/notebook/go_analysis.ipynb | 8 +- tutorial/notebook/python_analysis.ipynb | 214 ++++++++++++++++++ tutorial/notebook/xml_analysis.ipynb | 280 ++++++++++++++++++++++++ 4 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 tutorial/notebook/python_analysis.ipynb create mode 100644 tutorial/notebook/xml_analysis.ipynb diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index cf953372..48d0ec20 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,4 +8,4 @@ "openFiles": ["tutorial/README.md"] } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/tutorial/notebook/go_analysis.ipynb b/tutorial/notebook/go_analysis.ipynb index ba1078d7..aa03e4ee 100644 --- a/tutorial/notebook/go_analysis.ipynb +++ b/tutorial/notebook/go_analysis.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "这是一个使用CodeFuse-Query分析Go项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。" + "这是一个使用 CodeFuse-Query 分析 Go 项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用 Godel 语言来分析这个仓库。" ] }, { @@ -54,7 +54,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的gorm子目录),分析的语言(go),以及db文件的存储路径(放置在当前目录下的/db/gorm)。执行该命令之后,竟会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的gorm子目录),分析的语言(go),以及db文件的存储路径(放置在当前目录下的/db/gorm)。执行该命令之后,就会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" ] }, { @@ -75,7 +75,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,直接运行分析脚本。在命令行中,你可以使用 `sparrow query run` 命令来执行查询脚本,具体可以使用`sparrow query run -h` 来获取详细参数信息。" + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,或使用快捷键:`Shift+Enter`,直接运行分析脚本。这里使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询。" ] }, { @@ -150,7 +150,7 @@ "collapsed": false }, "source": [ - "STEP 3: 好了,你可以针对分析生成的结果,进行进一步的代码分析了,比如你可以结合pandas库,使用刚刚生成的 query.json 实现最大函数复杂度的排序查询:" + "STEP 3: 好了,你可以针对分析生成的结果,进行进一步的代码分析了,比如你可以结合pandas库,使用刚刚生成的 query.json 实现最大函数复杂度Top 10的排序查询:" ] }, { diff --git a/tutorial/notebook/python_analysis.ipynb b/tutorial/notebook/python_analysis.ipynb new file mode 100644 index 00000000..79d88848 --- /dev/null +++ b/tutorial/notebook/python_analysis.ipynb @@ -0,0 +1,214 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这是一个使用 CodeFuse-Query 分析 Python 项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用 Godel 语言来分析这个仓库。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "检查cli是否就绪" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!which sparrow" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 0: 克隆要分析的仓库。我们以 python 仓库 [requests](https://github.com/psf/requests.git) 项目为例。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-22T08:30:58.387715Z", + "start_time": "2023-11-22T08:30:44.572634Z" + } + }, + "outputs": [], + "source": [ + "!git clone https://github.com/psf/requests.git" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的requests子目录),分析的语言(python),以及db文件的存储路径(放置在当前目录下的/db/requests)。执行该命令之后,就会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:46:32.220317Z", + "start_time": "2023-11-23T03:46:12.785705Z" + } + }, + "outputs": [], + "source": [ + "!sparrow database create --source-root requests --data-language-type python --output ./db/requests" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,或使用快捷键:`Shift+Enter`,直接运行分析脚本。这里使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "示例 查询 [requests](https://github.com/psf/requests.git) 的文件注释率信息。\n", + "\n", + "第一行通过内核魔法命令指定分析的db路径,后面写查询文件代码注释率 Godel 脚本。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%db ./db/requests\n", + "// script\n", + "use coref::python::*\n", + "\n", + "fn default_db() -> PythonDB {\n", + " return PythonDB::load(\"coref_python_src.db\")\n", + "}\n", + "\n", + "/**\n", + " * Get cyclomatic complexity of functions\n", + " *\n", + " * @param name function name\n", + " * @param value cyclomatic complexity of function\n", + " * @param path path of file including this function\n", + " * @param sline function start line\n", + " * @param eline function end line\n", + " */\n", + "fn getCyclomaticComplexity(\n", + " name: string,\n", + " value: int,\n", + " path: string,\n", + " sline: int,\n", + " eline: int) -> bool {\n", + " // get metric function\n", + " for (c in MetricFunction(default_db())) {\n", + " if (path = c.getLocation().getFile().getRelativePath() &&\n", + " name = c.getQualifiedName() &&\n", + " value = c.getCyclomaticComplexity() &&\n", + " sline = c.getLocation().getStartLineNumber() &&\n", + " eline = c.getLocation().getEndLineNumber()) {\n", + " return true\n", + " }\n", + " }\n", + "}\n", + "\n", + "fn main() {\n", + " output(getCyclomaticComplexity())\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "保存上一次运行的 query 结果保存到一个JSON文件" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%save_to ./query.json" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 3: 好了,你可以针对分析生成的结果,进行进一步的代码分析了,比如你可以结合pandas库,使用刚刚生成的 query.json 实现最大函数复杂度Top 10的排序查询:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:54:56.998681Z", + "start_time": "2023-11-23T03:54:56.976694Z" + }, + "collapsed": false + }, + "outputs": [], + "source": [ + "%%python\n", + "import pandas as pd\n", + "data = pd.read_json('./query.json')\n", + "data.sort_values('value', ascending=False, inplace=True)\n", + "top_10 = data.head(10)\n", + "print(top_10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Enjoy!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Godel kernel", + "language": "rust", + "name": "godel-jupyter" + }, + "language_info": { + "file_extension": ".gdl", + "help_links": [ + { + "text": "Godel kernel Magics", + "url": "https://sparrow.alipay.com" + } + ], + "mimetype": "text/rust", + "name": "rust", + "version": "0.0.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorial/notebook/xml_analysis.ipynb b/tutorial/notebook/xml_analysis.ipynb new file mode 100644 index 00000000..c81efd2f --- /dev/null +++ b/tutorial/notebook/xml_analysis.ipynb @@ -0,0 +1,280 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这是一个使用CodeFuse-Query分析 XML 项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "检查cli是否就绪" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!which sparrow" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 0: 克隆要分析的仓库。我们以 [sofa-boot](https://github.com/sofastack/sofa-boot.git) 项目为例。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-22T08:30:58.387715Z", + "start_time": "2023-11-22T08:30:44.572634Z" + } + }, + "outputs": [], + "source": [ + "!git clone https://github.com/sofastack/sofa-boot.git" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的sofa-boot子目录),分析的语言(xml),以及db文件的存储路径(放置在当前目录下的/db/sofa-boot)。执行该命令之后,就会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:46:32.220317Z", + "start_time": "2023-11-23T03:46:12.785705Z" + } + }, + "outputs": [], + "source": [ + "!sparrow database create --source-root sofa-boot --data-language-type xml --output ./db/sofa-boot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,或使用快捷键:`Shift+Enter`,直接运行分析脚本。这里使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "示例 查询 [sofa-boot](https://github.com/sofastack/sofa-boot.git) 的POM信息(如文件路径,引用的jar资源,版本信息)。\n", + "\n", + "第一行通过内核魔法命令指定分析的db路径,后面写查询POM信息Godel脚本。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%db ./db/sofa-boot\n", + "// script\n", + "use coref::xml::*\n", + "\n", + "schema DependencyElement extends XmlElement {}\n", + "\n", + "impl DependencyElement {\n", + " @data_constraint\n", + " pub fn __all__(db: XmlDB) -> *DependencyElement {\n", + " for(e in XmlElement(db)) {\n", + " if (e.getElementName() = \"dependency\") {\n", + " yield DependencyElement {\n", + " id: e.id,\n", + " location_id: e.location_id,\n", + " parent_id: e.parent_id,\n", + " index_order: e.index_order\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "schema GroupElement extends XmlElement {}\n", + "\n", + "impl GroupElement {\n", + " @data_constraint\n", + " pub fn __all__(db: XmlDB) -> *GroupElement {\n", + " for(e in XmlElement(db)) {\n", + " if (e.getElementName() = \"groupId\") {\n", + " yield GroupElement {\n", + " id: e.id,\n", + " location_id: e.location_id,\n", + " parent_id: e.parent_id,\n", + " index_order: e.index_order\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "schema VersionElement extends XmlElement {}\n", + "\n", + "impl VersionElement {\n", + " @data_constraint\n", + " pub fn __all__(db: XmlDB) -> *VersionElement {\n", + " for(e in XmlElement(db)) {\n", + " if (e.getElementName() = \"version\") {\n", + " yield VersionElement {\n", + " id: e.id,\n", + " location_id: e.location_id,\n", + " parent_id: e.parent_id,\n", + " index_order: e.index_order\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "schema ArtifactElement extends XmlElement {}\n", + "\n", + "impl ArtifactElement {\n", + " @data_constraint\n", + " pub fn __all__(db: XmlDB) -> *ArtifactElement {\n", + " for(e in XmlElement(db)) {\n", + " if (e.getElementName() = \"artifactId\") {\n", + " yield ArtifactElement {\n", + " id: e.id,\n", + " location_id: e.location_id,\n", + " parent_id: e.parent_id,\n", + " index_order: e.index_order\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "schema PomFile extends XmlFile {}\n", + "\n", + "impl PomFile {\n", + " @data_constraint\n", + " pub fn __all__(db: XmlDB) -> *PomFile {\n", + " for(f in XmlFile(db)) {\n", + " if (f.getFileName() = \"pom.xml\") {\n", + " yield PomFile {\n", + " id: f.id,\n", + " file_name: f.file_name,\n", + " relative_path: f.relative_path\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// output relative path of the file, referenced jar name and version\n", + "fn out(fileName: string, m1: string, m2: string, m3: string) -> bool {\n", + " let (db = XmlDB::load(\"coref_xml_src.db\")) {\n", + " for (f in PomFile(db),\n", + " e1 in GroupElement(db),\n", + " e2 in VersionElement(db),\n", + " e3 in ArtifactElement(db),\n", + " c1 in XmlCharacter(db),\n", + " c2 in XmlCharacter(db),\n", + " c3 in XmlCharacter(db),\n", + " p in DependencyElement(db)) {\n", + " if (f.key_eq(p.getLocation().getFile()) &&\n", + " fileName = f.getRelativePath() &&\n", + " p.key_eq(e1.getParent()) &&\n", + " e1.key_eq(c1.getBelongedElement()) &&\n", + " m1 = c1.getText() &&\n", + " p.key_eq(e2.getParent()) &&\n", + " e2.key_eq(c2.getBelongedElement()) &&\n", + " m2 = c2.getText() &&\n", + " p.key_eq(e3.getParent()) &&\n", + " e3.key_eq(c3.getBelongedElement()) &&\n", + " m3 = c3.getText()) {\n", + " return true\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "fn main() {\n", + " output(out())\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "保存上一次运行的 query 结果保存到一个 JSON/CSV 文件" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%save_to ./query.csv" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 3: 好了,你可以针对分析生成的结果,进行进一步的代码分析了。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Enjoy!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Godel kernel", + "language": "rust", + "name": "godel-jupyter" + }, + "language_info": { + "file_extension": ".gdl", + "help_links": [ + { + "text": "Godel kernel Magics", + "url": "https://sparrow.alipay.com" + } + ], + "mimetype": "text/rust", + "name": "rust", + "version": "0.0.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From e503f76d1d9d0be71057232a5cf8888180e798dc Mon Sep 17 00:00:00 2001 From: Xunjin ZHENG Date: Thu, 30 Nov 2023 08:09:35 +0000 Subject: [PATCH 07/29] Add javascript analysis tuto & add some extensions to be installed when in codespaces --- .devcontainer/devcontainer.json | 26 +- tutorial/README.md | 82 +- tutorial/notebook/javascript_analysis.ipynb | 2912 +++++++++++++++++++ 3 files changed, 3005 insertions(+), 15 deletions(-) create mode 100644 tutorial/notebook/javascript_analysis.ipynb diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3d71c912..0eb29b65 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,16 +1,22 @@ { "image": "ghcr.io/lonrun/codefuse-query-tutorial:0.5", "hostRequirements": { - "cpus": 4 + "cpus": 4 }, "customizations": { - "codespaces": { - "openFiles": ["tutorial/README.md"] - }, - // Configure properties specific to VS Code. - "vscode": { - // Add the IDs of extensions you want installed when the container is created. - "extensions": ["ms-toolsai.jupyter"] - } + "codespaces": { + "openFiles": [ + "tutorial/README.md" + ] + }, + // Configure properties specific to VS Code. + "vscode": { + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-toolsai.jupyter", + "MS-CEINTL.vscode-language-pack-zh-hans", + "CodeFuse-Query.codefuse-query-extension" + ] + } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/tutorial/README.md b/tutorial/README.md index 292c35a3..3d13653c 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -1,13 +1,85 @@ -## CodeQuery使用教程 +## CodeFuse-Query使用教程 -### 使用Github Codespaces 来体验CodeQuery分析能力 +### 使用Github Codespaces 来体验CodeFuse-Query分析能力 + +### Jupyter kernel for CodeFuse-query 介绍 + +Jupyter kernel for CodeFuse-query 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-query 相关的交互式功能。该内核允许用户在 Jupyter Notebook 中编写和执行 Godel 脚本,用于抽取、查询代码数据。此外,它还支持编写 Python 代码,以便对查询到的数据进行更深入的数据可视化和数据后处理操作。这里我们使用这个内核编写 Jupyter Notebook,用来进行 CodeFuse-Query 教程的学习和实践。 #### 步骤 -- 在项目主页切换到目标分支 - 创建 Codespaces,依次点击 Code -> Codespaces,在当前分支创建一个 Codespaces - 创建后,打开该 Codespaces,加载完成后,切换至项目 tutorial/notebook 目录下 -- 选择示例下的 jupyter notebook 分析教程,即可开始体验 +- 选择示例下的 Jupyter Notebook 分析教程,即可开始体验 #### 注意 -- 打开jupyter页面之后,如果是第一次加载容器,你还需要配置教程所使用的内核,在右上角 “选择内核”弹出框中,依次选择 “Juypter Kernel...” -> “Godel Kernel” 即可。 + +在打开 Jupyter 页面之后,如果是第一次加载容器,你还需要配置教程所使用的 `Jupyter kernel for CodeFuse-query`。在右上角的 "选择内核" 弹出框中,依次选择 "Jupyter Kernel..." -> "Godel Kernel"。 + +#### Kernel 用法 +##### 设置要查询的 COREF database + +使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询,比如: + +```bash +%db ./db +``` + +> tips: 还可以用`!`来运行一些有用的bash命令,比如查看Sparrow CLI是否存在: + +```rust +!which sparrow +``` + +##### Godel 查询 + +设置好db路径后可以直接写Godel脚本,Jupyter kernel会创建临时文件来保存当前运行的Godel脚本并调用`sparrow query run`命令来进行查询,结果返回以HTML格式显示: + + +```rust +// Write your query and run in the notebook +// ... +``` + + +`%db` 魔法命令可以写在 Godel 脚本的第一行: + + +```rust +%db ./db +// Write your query and run in the notebook +// ... +``` + + +可以通过 `%%save_to` cell魔法命令保存**上一次运行成功**的 query 结果到一个JSON文件,具体用法: +```bash +%%save_to PATH - save the query result to a JSON file. + +This cell magic will save the Sparrow query result to a file. + +Example: + %%save_to /path/to/file.json +``` + +比如: +```bash +%%save_to ./query.json +``` + +##### 运行 Python 代码 + +可以通过 `%%python` 或者 `%python` 来运行 Python 代码,比如: + +```python +%%python +import pandas as pd +data = pd.read_json('./query.json') +data.sort_values('cmplx', ascending=False, inplace=True) +top_10 = data.head(10) +print(top_10) +``` + +```python +%python print('hello') +``` diff --git a/tutorial/notebook/javascript_analysis.ipynb b/tutorial/notebook/javascript_analysis.ipynb new file mode 100644 index 00000000..7c8c3068 --- /dev/null +++ b/tutorial/notebook/javascript_analysis.ipynb @@ -0,0 +1,2912 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这是一个使用CodeFuse-Query分析JavaScript项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "检查cli是否就绪" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/sparrow-cli/sparrow\n", + "\n" + ] + } + ], + "source": [ + "!which sparrow" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 0: 克隆要分析的仓库。我们以 [axios](https://github.com/axios/axios.git) 项目为例。" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-22T08:30:58.387715Z", + "start_time": "2023-11-22T08:30:44.572634Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning into 'axios'...\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "remote: Enumerating objects: 9324, done. \n", + "\n", + "\n", + "remote: Counting objects: 0% (1/2814) \n", + "\n", + "remote: Counting objects: 1% (29/2814) \n", + "\n", + "remote: Counting objects: 2% (57/2814) \n", + "\n", + "remote: Counting objects: 3% (85/2814) \n", + "\n", + "remote: Counting objects: 4% (113/2814) \n", + "\n", + "remote: Counting objects: 5% (141/2814) \n", + "\n", + "remote: Counting objects: 6% (169/2814) \n", + "\n", + "remote: Counting objects: 7% (197/2814) \n", + "\n", + "remote: Counting objects: 8% (226/2814) \n", + "\n", + "remote: Counting objects: 9% (254/2814) \n", + "\n", + "remote: Counting objects: 10% (282/2814) \n", + "\n", + "remote: Counting objects: 11% (310/2814) \n", + "\n", + "remote: Counting objects: 12% (338/2814) \n", + "\n", + "remote: Counting objects: 13% (366/2814) \n", + "\n", + "remote: Counting objects: 14% (394/2814) \n", + "\n", + "remote: Counting objects: 15% (423/2814) \n", + "\n", + "remote: Counting objects: 16% (451/2814) \n", + "\n", + "remote: Counting objects: 17% (479/2814) \n", + "\n", + "remote: Counting objects: 18% (507/2814) \n", + "\n", + "remote: Counting objects: 19% (535/2814) \n", + "\n", + "remote: Counting objects: 20% (563/2814) \n", + "\n", + "remote: Counting objects: 21% (591/2814) \n", + "\n", + "remote: Counting objects: 22% (620/2814) \n", + "\n", + "remote: Counting objects: 23% (648/2814) \n", + "\n", + "remote: Counting objects: 24% (676/2814) \n", + "\n", + "remote: Counting objects: 25% (704/2814) \n", + "\n", + "remote: Counting objects: 26% (732/2814) \n", + "\n", + "remote: Counting objects: 27% (760/2814) \n", + "\n", + "remote: Counting objects: 28% (788/2814) \n", + "\n", + "remote: Counting objects: 29% (817/2814) \n", + "\n", + "remote: Counting objects: 30% (845/2814) \n", + "\n", + "remote: Counting objects: 31% (873/2814) \n", + "\n", + "remote: Counting objects: 32% (901/2814) \n", + "\n", + "remote: Counting objects: 33% (929/2814) \n", + "\n", + "remote: Counting objects: 34% (957/2814) \n", + "\n", + "remote: Counting objects: 35% (985/2814) \n", + "\n", + "remote: Counting objects: 36% (1014/2814) \n", + "\n", + "remote: Counting objects: 37% (1042/2814) \n", + "\n", + "remote: Counting objects: 38% (1070/2814) \n", + "\n", + "remote: Counting objects: 39% (1098/2814) \n", + "\n", + "remote: Counting objects: 40% (1126/2814) \n", + "\n", + "remote: Counting objects: 41% (1154/2814) \n", + "\n", + "remote: Counting objects: 42% (1182/2814) \n", + "\n", + "remote: Counting objects: 43% (1211/2814) \n", + "\n", + "remote: Counting objects: 44% (1239/2814) \n", + "\n", + "remote: Counting objects: 45% (1267/2814) \n", + "\n", + "remote: Counting objects: 46% (1295/2814) \n", + "\n", + "remote: Counting objects: 47% (1323/2814) \n", + "\n", + "remote: Counting objects: 48% (1351/2814) \n", + "\n", + "remote: Counting objects: 49% (1379/2814) \n", + "\n", + "remote: Counting objects: 50% (1407/2814) \n", + "\n", + "remote: Counting objects: 51% (1436/2814) \n", + "\n", + "remote: Counting objects: 52% (1464/2814) \n", + "\n", + "remote: Counting objects: 53% (1492/2814) \n", + "\n", + "remote: Counting objects: 54% (1520/2814) \n", + "\n", + "remote: Counting objects: 55% (1548/2814) \n", + "\n", + "remote: Counting objects: 56% (1576/2814) \n", + "\n", + "remote: Counting objects: 57% (1604/2814) \n", + "\n", + "remote: Counting objects: 58% (1633/2814) \n", + "\n", + "remote: Counting objects: 59% (1661/2814) \n", + "\n", + "remote: Counting objects: 60% (1689/2814) \n", + "\n", + "remote: Counting objects: 61% (1717/2814) \n", + "\n", + "remote: Counting objects: 62% (1745/2814) \n", + "\n", + "remote: Counting objects: 63% (1773/2814) \n", + "\n", + "remote: Counting objects: 64% (1801/2814) \n", + "\n", + "remote: Counting objects: 65% (1830/2814) \n", + "\n", + "remote: Counting objects: 66% (1858/2814) \n", + "\n", + "remote: Counting objects: 67% (1886/2814) \n", + "\n", + "remote: Counting objects: 68% (1914/2814) \n", + "\n", + "remote: Counting objects: 69% (1942/2814) \n", + "\n", + "remote: Counting objects: 70% (1970/2814) \n", + "\n", + "remote: Counting objects: 71% (1998/2814) \n", + "\n", + "remote: Counting objects: 72% (2027/2814) \n", + "\n", + "remote: Counting objects: 73% (2055/2814) \n", + "\n", + "remote: Counting objects: 74% (2083/2814) \n", + "\n", + "remote: Counting objects: 75% (2111/2814) \n", + "\n", + "remote: Counting objects: 76% (2139/2814) \n", + "\n", + "remote: Counting objects: 77% (2167/2814) \n", + "\n", + "remote: Counting objects: 78% (2195/2814) \n", + "\n", + "remote: Counting objects: 79% (2224/2814) \n", + "\n", + "remote: Counting objects: 80% (2252/2814) \n", + "\n", + "remote: Counting objects: 81% (2280/2814) \n", + "\n", + "remote: Counting objects: 82% (2308/2814) \n", + "\n", + "remote: Counting objects: 83% (2336/2814) \n", + "\n", + "remote: Counting objects: 84% (2364/2814) \n", + "\n", + "remote: Counting objects: 85% (2392/2814) \n", + "\n", + "remote: Counting objects: 86% (2421/2814) \n", + "\n", + "remote: Counting objects: 87% (2449/2814) \n", + "\n", + "remote: Counting objects: 88% (2477/2814) \n", + "\n", + "remote: Counting objects: 89% (2505/2814) \n", + "\n", + "remote: Counting objects: 90% (2533/2814) \n", + "\n", + "remote: Counting objects: 91% (2561/2814) \n", + "\n", + "remote: Counting objects: 92% (2589/2814) \n", + "\n", + "remote: Counting objects: 93% (2618/2814) \n", + "\n", + "remote: Counting objects: 94% (2646/2814) \n", + "\n", + "remote: Counting objects: 95% (2674/2814) \n", + "\n", + "remote: Counting objects: 96% (2702/2814) \n", + "\n", + "remote: Counting objects: 97% (2730/2814) \n", + "\n", + "remote: Counting objects: 98% (2758/2814) \n", + "\n", + "remote: Counting objects: 99% (2786/2814) \n", + "\n", + "remote: Counting objects: 100% (2814/2814) \n", + "\n", + "remote: Counting objects: 100% (2814/2814), done. \n", + "\n", + "\n", + "remote: Compressing objects: 0% (1/448) \n", + "\n", + "remote: Compressing objects: 1% (5/448) \n", + "\n", + "remote: Compressing objects: 2% (9/448) \n", + "\n", + "remote: Compressing objects: 3% (14/448) \n", + "\n", + "remote: Compressing objects: 4% (18/448) \n", + "\n", + "remote: Compressing objects: 5% (23/448) \n", + "\n", + "remote: Compressing objects: 6% (27/448) \n", + "\n", + "remote: Compressing objects: 7% (32/448) \n", + "\n", + "remote: Compressing objects: 8% (36/448) \n", + "\n", + "remote: Compressing objects: 9% (41/448) \n", + "\n", + "remote: Compressing objects: 10% (45/448) \n", + "\n", + "remote: Compressing objects: 11% (50/448) \n", + "\n", + "remote: Compressing objects: 12% (54/448) \n", + "\n", + "remote: Compressing objects: 13% (59/448) \n", + "\n", + "remote: Compressing objects: 14% (63/448) \n", + "\n", + "remote: Compressing objects: 15% (68/448) \n", + "\n", + "remote: Compressing objects: 16% (72/448) \n", + "\n", + "remote: Compressing objects: 17% (77/448) \n", + "\n", + "remote: Compressing objects: 18% (81/448) \n", + "\n", + "remote: Compressing objects: 19% (86/448) \n", + "\n", + "remote: Compressing objects: 20% (90/448) \n", + "\n", + "remote: Compressing objects: 21% (95/448) \n", + "\n", + "remote: Compressing objects: 22% (99/448) \n", + "\n", + "remote: Compressing objects: 23% (104/448) \n", + "\n", + "remote: Compressing objects: 24% (108/448) \n", + "\n", + "remote: Compressing objects: 25% (112/448) \n", + "\n", + "remote: Compressing objects: 26% (117/448) \n", + "\n", + "remote: Compressing objects: 27% (121/448) \n", + "\n", + "remote: Compressing objects: 28% (126/448) \n", + "\n", + "remote: Compressing objects: 29% (130/448) \n", + "\n", + "remote: Compressing objects: 30% (135/448) \n", + "\n", + "remote: Compressing objects: 31% (139/448) \n", + "\n", + "remote: Compressing objects: 32% (144/448) \n", + "\n", + "remote: Compressing objects: 33% (148/448) \n", + "\n", + "remote: Compressing objects: 34% (153/448) \n", + "\n", + "remote: Compressing objects: 35% (157/448) \n", + "\n", + "remote: Compressing objects: 36% (162/448) \n", + "\n", + "remote: Compressing objects: 37% (166/448) \n", + "\n", + "remote: Compressing objects: 38% (171/448) \n", + "\n", + "remote: Compressing objects: 39% (175/448) \n", + "\n", + "remote: Compressing objects: 40% (180/448) \n", + "\n", + "remote: Compressing objects: 41% (184/448) \n", + "\n", + "remote: Compressing objects: 42% (189/448) \n", + "\n", + "remote: Compressing objects: 43% (193/448) \n", + "\n", + "remote: Compressing objects: 44% (198/448) \n", + "\n", + "remote: Compressing objects: 45% (202/448) \n", + "\n", + "remote: Compressing objects: 46% (207/448) \n", + "\n", + "remote: Compressing objects: 47% (211/448) \n", + "\n", + "remote: Compressing objects: 48% (216/448) \n", + "\n", + "remote: Compressing objects: 49% (220/448) \n", + "\n", + "remote: Compressing objects: 50% (224/448) \n", + "\n", + "remote: Compressing objects: 51% (229/448) \n", + "\n", + "remote: Compressing objects: 52% (233/448) \n", + "\n", + "remote: Compressing objects: 53% (238/448) \n", + "\n", + "remote: Compressing objects: 54% (242/448) \n", + "\n", + "remote: Compressing objects: 55% (247/448) \n", + "\n", + "remote: Compressing objects: 56% (251/448) \n", + "\n", + "remote: Compressing objects: 57% (256/448) \n", + "\n", + "remote: Compressing objects: 58% (260/448) \n", + "\n", + "remote: Compressing objects: 59% (265/448) \n", + "\n", + "remote: Compressing objects: 60% (269/448) \n", + "\n", + "remote: Compressing objects: 61% (274/448) \n", + "\n", + "remote: Compressing objects: 62% (278/448) \n", + "\n", + "remote: Compressing objects: 63% (283/448) \n", + "\n", + "remote: Compressing objects: 64% (287/448) \n", + "\n", + "remote: Compressing objects: 65% (292/448) \n", + "\n", + "remote: Compressing objects: 66% (296/448) \n", + "\n", + "remote: Compressing objects: 67% (301/448) \n", + "\n", + "remote: Compressing objects: 68% (305/448) \n", + "\n", + "remote: Compressing objects: 69% (310/448) \n", + "\n", + "remote: Compressing objects: 70% (314/448) \n", + "\n", + "remote: Compressing objects: 71% (319/448) \n", + "\n", + "remote: Compressing objects: 72% (323/448) \n", + "\n", + "remote: Compressing objects: 73% (328/448) \n", + "\n", + "remote: Compressing objects: 74% (332/448) \n", + "\n", + "remote: Compressing objects: 75% (336/448) \n", + "\n", + "remote: Compressing objects: 76% (341/448) \n", + "\n", + "remote: Compressing objects: 77% (345/448) \n", + "\n", + "remote: Compressing objects: 78% (350/448) \n", + "\n", + "remote: Compressing objects: 79% (354/448) \n", + "\n", + "remote: Compressing objects: 80% (359/448) \n", + "\n", + "remote: Compressing objects: 81% (363/448) \n", + "\n", + "remote: Compressing objects: 82% (368/448) \n", + "\n", + "remote: Compressing objects: 83% (372/448) \n", + "\n", + "remote: Compressing objects: 84% (377/448) \n", + "\n", + "remote: Compressing objects: 85% (381/448) \n", + "\n", + "remote: Compressing objects: 86% (386/448) \n", + "\n", + "remote: Compressing objects: 87% (390/448) \n", + "\n", + "remote: Compressing objects: 88% (395/448) \n", + "\n", + "remote: Compressing objects: 89% (399/448) \n", + "\n", + "remote: Compressing objects: 90% (404/448) \n", + "\n", + "remote: Compressing objects: 91% (408/448) \n", + "\n", + "remote: Compressing objects: 92% (413/448) \n", + "\n", + "remote: Compressing objects: 93% (417/448) \n", + "\n", + "remote: Compressing objects: 94% (422/448) \n", + "\n", + "remote: Compressing objects: 95% (426/448) \n", + "\n", + "remote: Compressing objects: 96% (431/448) \n", + "\n", + "remote: Compressing objects: 97% (435/448) \n", + "\n", + "remote: Compressing objects: 98% (440/448) \n", + "\n", + "remote: Compressing objects: 99% (444/448) \n", + "\n", + "remote: Compressing objects: 100% (448/448) \n", + "\n", + "remote: Compressing objects: 100% (448/448), done. \n", + "\n", + "\n", + "Receiving objects: 0% (1/9324)\n", + "\n", + "Receiving objects: 1% (94/9324)\n", + "\n", + "Receiving objects: 2% (187/9324)\n", + "\n", + "Receiving objects: 3% (280/9324)\n", + "\n", + "Receiving objects: 4% (373/9324)\n", + "\n", + "Receiving objects: 5% (467/9324)\n", + "\n", + "Receiving objects: 6% (560/9324)\n", + "\n", + "Receiving objects: 7% (653/9324)\n", + "\n", + "Receiving objects: 8% (746/9324)\n", + "\n", + "Receiving objects: 9% (840/9324)\n", + "\n", + "Receiving objects: 10% (933/9324)\n", + "\n", + "Receiving objects: 11% (1026/9324)\n", + "\n", + "Receiving objects: 12% (1119/9324)\n", + "\n", + "Receiving objects: 13% (1213/9324)\n", + "\n", + "Receiving objects: 14% (1306/9324)\n", + "\n", + "Receiving objects: 15% (1399/9324)\n", + "\n", + "Receiving objects: 16% (1492/9324)\n", + "\n", + "Receiving objects: 17% (1586/9324)\n", + "\n", + "Receiving objects: 18% (1679/9324)\n", + "\n", + "Receiving objects: 19% (1772/9324)\n", + "\n", + "Receiving objects: 20% (1865/9324)\n", + "\n", + "Receiving objects: 21% (1959/9324)\n", + "\n", + "Receiving objects: 22% (2052/9324)\n", + "\n", + "Receiving objects: 23% (2145/9324)\n", + "\n", + "Receiving objects: 24% (2238/9324)\n", + "\n", + "Receiving objects: 25% (2331/9324)\n", + "\n", + "Receiving objects: 26% (2425/9324)\n", + "\n", + "Receiving objects: 27% (2518/9324)\n", + "\n", + "Receiving objects: 28% (2611/9324)\n", + "\n", + "Receiving objects: 29% (2704/9324)\n", + "\n", + "Receiving objects: 30% (2798/9324)\n", + "\n", + "Receiving objects: 31% (2891/9324)\n", + "\n", + "Receiving objects: 32% (2984/9324)\n", + "\n", + "Receiving objects: 33% (3077/9324)\n", + "\n", + "Receiving objects: 34% (3171/9324)\n", + "\n", + "Receiving objects: 35% (3264/9324)\n", + "\n", + "Receiving objects: 36% (3357/9324)\n", + "\n", + "Receiving objects: 37% (3450/9324)\n", + "\n", + "Receiving objects: 38% (3544/9324)\n", + "\n", + "Receiving objects: 39% (3637/9324)\n", + "\n", + "Receiving objects: 40% (3730/9324)\n", + "\n", + "Receiving objects: 41% (3823/9324)\n", + "\n", + "Receiving objects: 42% (3917/9324)\n", + "\n", + "Receiving objects: 43% (4010/9324)\n", + "\n", + "Receiving objects: 44% (4103/9324)\n", + "\n", + "Receiving objects: 45% (4196/9324)\n", + "\n", + "Receiving objects: 46% (4290/9324)\n", + "\n", + "Receiving objects: 47% (4383/9324)\n", + "\n", + "Receiving objects: 48% (4476/9324)\n", + "\n", + "Receiving objects: 49% (4569/9324)\n", + "\n", + "Receiving objects: 50% (4662/9324)\n", + "\n", + "Receiving objects: 51% (4756/9324)\n", + "\n", + "Receiving objects: 52% (4849/9324)\n", + "\n", + "Receiving objects: 53% (4942/9324)\n", + "\n", + "Receiving objects: 54% (5035/9324)\n", + "\n", + "Receiving objects: 55% (5129/9324)\n", + "\n", + "Receiving objects: 56% (5222/9324)\n", + "\n", + "Receiving objects: 57% (5315/9324)\n", + "\n", + "Receiving objects: 58% (5408/9324)\n", + "\n", + "Receiving objects: 59% (5502/9324)\n", + "\n", + "Receiving objects: 60% (5595/9324)\n", + "\n", + "Receiving objects: 61% (5688/9324)\n", + "\n", + "Receiving objects: 62% (5781/9324)\n", + "\n", + "Receiving objects: 63% (5875/9324)\n", + "\n", + "Receiving objects: 64% (5968/9324)\n", + "\n", + "Receiving objects: 65% (6061/9324)\n", + "\n", + "Receiving objects: 66% (6154/9324)\n", + "\n", + "Receiving objects: 67% (6248/9324)\n", + "\n", + "Receiving objects: 68% (6341/9324)\n", + "\n", + "Receiving objects: 69% (6434/9324)\n", + "\n", + "Receiving objects: 70% (6527/9324)\n", + "\n", + "Receiving objects: 71% (6621/9324)\n", + "\n", + "Receiving objects: 72% (6714/9324)\n", + "\n", + "Receiving objects: 73% (6807/9324)\n", + "\n", + "Receiving objects: 74% (6900/9324)\n", + "\n", + "Receiving objects: 75% (6993/9324)\n", + "\n", + "Receiving objects: 76% (7087/9324)\n", + "\n", + "Receiving objects: 77% (7180/9324)\n", + "\n", + "Receiving objects: 78% (7273/9324)\n", + "\n", + "Receiving objects: 79% (7366/9324)\n", + "\n", + "Receiving objects: 80% (7460/9324)\n", + "\n", + "Receiving objects: 81% (7553/9324)\n", + "\n", + "Receiving objects: 82% (7646/9324)\n", + "\n", + "Receiving objects: 83% (7739/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 84% (7833/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 85% (7926/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 86% (8019/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 87% (8112/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 88% (8206/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 89% (8299/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 90% (8392/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 91% (8485/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 92% (8579/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 93% (8672/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 94% (8765/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 95% (8858/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 96% (8952/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 97% (9045/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 98% (9138/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 99% (9231/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "remote: Total 9324 (delta 2509), reused 2486 (delta 2357), pack-reused 6510 \n", + "\n", + "\n", + "Receiving objects: 100% (9324/9324), 4.81 MiB | 9.60 MiB/s\n", + "\n", + "Receiving objects: 100% (9324/9324), 10.07 MiB | 12.66 MiB/s, done.\n", + "\n", + "\n", + "Resolving deltas: 0% (0/5971)\n", + "\n", + "Resolving deltas: 1% (60/5971)\n", + "\n", + "Resolving deltas: 2% (121/5971)\n", + "\n", + "Resolving deltas: 3% (180/5971)\n", + "\n", + "Resolving deltas: 4% (239/5971)\n", + "\n", + "Resolving deltas: 5% (299/5971)\n", + "\n", + "Resolving deltas: 6% (359/5971)\n", + "\n", + "Resolving deltas: 7% (418/5971)\n", + "\n", + "Resolving deltas: 8% (478/5971)\n", + "\n", + "Resolving deltas: 9% (538/5971)\n", + "\n", + "Resolving deltas: 10% (598/5971)\n", + "\n", + "Resolving deltas: 11% (657/5971)\n", + "\n", + "Resolving deltas: 12% (717/5971)\n", + "\n", + "Resolving deltas: 13% (778/5971)\n", + "\n", + "Resolving deltas: 14% (837/5971)\n", + "\n", + "Resolving deltas: 15% (896/5971)\n", + "\n", + "Resolving deltas: 16% (956/5971)\n", + "\n", + "Resolving deltas: 17% (1016/5971)\n", + "\n", + "Resolving deltas: 18% (1075/5971)\n", + "\n", + "Resolving deltas: 19% (1135/5971)\n", + "\n", + "Resolving deltas: 20% (1195/5971)\n", + "\n", + "Resolving deltas: 21% (1254/5971)\n", + "\n", + "Resolving deltas: 22% (1314/5971)\n", + "\n", + "Resolving deltas: 23% (1374/5971)\n", + "\n", + "Resolving deltas: 24% (1434/5971)\n", + "\n", + "Resolving deltas: 25% (1493/5971)\n", + "\n", + "Resolving deltas: 26% (1553/5971)\n", + "\n", + "Resolving deltas: 27% (1613/5971)\n", + "\n", + "Resolving deltas: 28% (1672/5971)\n", + "\n", + "Resolving deltas: 29% (1732/5971)\n", + "\n", + "Resolving deltas: 30% (1792/5971)\n", + "\n", + "Resolving deltas: 31% (1852/5971)\n", + "\n", + "Resolving deltas: 32% (1911/5971)\n", + "\n", + "Resolving deltas: 33% (1971/5971)\n", + "\n", + "Resolving deltas: 34% (2031/5971)\n", + "\n", + "Resolving deltas: 35% (2090/5971)\n", + "\n", + "Resolving deltas: 36% (2150/5971)\n", + "\n", + "Resolving deltas: 37% (2210/5971)\n", + "\n", + "Resolving deltas: 38% (2269/5971)\n", + "\n", + "Resolving deltas: 39% (2329/5971)\n", + "\n", + "Resolving deltas: 40% (2389/5971)\n", + "\n", + "Resolving deltas: 41% (2449/5971)\n", + "\n", + "Resolving deltas: 42% (2508/5971)\n", + "\n", + "Resolving deltas: 43% (2568/5971)\n", + "\n", + "Resolving deltas: 44% (2628/5971)\n", + "\n", + "Resolving deltas: 45% (2687/5971)\n", + "\n", + "Resolving deltas: 46% (2747/5971)\n", + "\n", + "Resolving deltas: 47% (2807/5971)\n", + "\n", + "Resolving deltas: 48% (2867/5971)\n", + "\n", + "Resolving deltas: 49% (2926/5971)\n", + "\n", + "Resolving deltas: 50% (2986/5971)\n", + "\n", + "Resolving deltas: 51% (3046/5971)\n", + "\n", + "Resolving deltas: 52% (3105/5971)\n", + "\n", + "Resolving deltas: 53% (3165/5971)\n", + "\n", + "Resolving deltas: 54% (3225/5971)\n", + "\n", + "Resolving deltas: 55% (3285/5971)\n", + "\n", + "Resolving deltas: 56% (3344/5971)\n", + "\n", + "Resolving deltas: 57% (3404/5971)\n", + "\n", + "Resolving deltas: 58% (3464/5971)\n", + "\n", + "Resolving deltas: 59% (3523/5971)\n", + "\n", + "Resolving deltas: 60% (3583/5971)\n", + "\n", + "Resolving deltas: 61% (3643/5971)\n", + "\n", + "Resolving deltas: 62% (3703/5971)\n", + "\n", + "Resolving deltas: 63% (3762/5971)\n", + "\n", + "Resolving deltas: 64% (3822/5971)\n", + "\n", + "Resolving deltas: 65% (3882/5971)\n", + "\n", + "Resolving deltas: 66% (3941/5971)\n", + "\n", + "Resolving deltas: 67% (4001/5971)\n", + "\n", + "Resolving deltas: 68% (4061/5971)\n", + "\n", + "Resolving deltas: 69% (4120/5971)\n", + "\n", + "Resolving deltas: 70% (4180/5971)\n", + "\n", + "Resolving deltas: 71% (4240/5971)\n", + "\n", + "Resolving deltas: 72% (4300/5971)\n", + "\n", + "Resolving deltas: 73% (4359/5971)\n", + "\n", + "Resolving deltas: 74% (4419/5971)\n", + "\n", + "Resolving deltas: 75% (4479/5971)\n", + "\n", + "Resolving deltas: 76% (4538/5971)\n", + "\n", + "Resolving deltas: 77% (4598/5971)\n", + "\n", + "Resolving deltas: 78% (4658/5971)\n", + "\n", + "Resolving deltas: 79% (4718/5971)\n", + "\n", + "Resolving deltas: 80% (4777/5971)\n", + "\n", + "Resolving deltas: 81% (4837/5971)\n", + "\n", + "Resolving deltas: 82% (4897/5971)\n", + "\n", + "Resolving deltas: 83% (4956/5971)\n", + "\n", + "Resolving deltas: 84% (5016/5971)\n", + "\n", + "Resolving deltas: 85% (5076/5971)\n", + "\n", + "Resolving deltas: 86% (5136/5971)\n", + "\n", + "Resolving deltas: 87% (5195/5971)\n", + "\n", + "Resolving deltas: 88% (5255/5971)\n", + "\n", + "Resolving deltas: 89% (5315/5971)\n", + "\n", + "Resolving deltas: 90% (5374/5971)\n", + "\n", + "Resolving deltas: 91% (5434/5971)\n", + "\n", + "Resolving deltas: 92% (5494/5971)\n", + "\n", + "Resolving deltas: 93% (5554/5971)\n", + "\n", + "Resolving deltas: 94% (5613/5971)\n", + "\n", + "Resolving deltas: 95% (5673/5971)\n", + "\n", + "Resolving deltas: 96% (5733/5971)\n", + "\n", + "Resolving deltas: 97% (5792/5971)\n", + "\n", + "Resolving deltas: 98% (5852/5971)\n", + "\n", + "Resolving deltas: 99% (5912/5971)\n", + "\n", + "Resolving deltas: 100% (5971/5971)\n", + "\n", + "Resolving deltas: 100% (5971/5971), done.\n", + "\n", + "\n" + ] + } + ], + "source": [ + "!git clone https://github.com/axios/axios.git" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的axios子目录),分析的语言(javscript),以及db文件的存储路径(放置在当前目录下的/db/axios)。执行该命令之后,会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行的。" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:46:32.220317Z", + "start_time": "2023-11-23T03:46:12.785705Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-11-30 08:05:39,428 INFO: sparrow 2.0.0\n", + "\n", + "\n", + " will start\n", + "\n", + "\n", + "2023-11-30 08:05:39,428 INFO: current memory is : 15.61 GB\n", + "\n", + "\n", + "2023-11-30 08:05:39,428 INFO: final -Xmx is : 14.61 GB\n", + "\n", + "\n", + "2023-11-30 08:05:39,428 INFO: /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db will be create\n", + "\n", + "\n", + "2023-11-30 08:05:39,428 INFO: execute : /sparrow-cli/language/javascript/extractor/coref-javascript-src-extractor extract --src /workspaces/CodeFuse-Query/tutorial/notebook/axios --db /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db\n", + "\n", + "\n", + "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/.git\n", + "\n", + "\n", + "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/dist\n", + "\n", + "\n", + "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/package-lock.json\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/.eslintrc.cjs...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/.eslintrc.cjs\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/gulpfile.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/gulpfile.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.cts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.cts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.ts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/karma.conf.cjs...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/karma.conf.cjs\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/rollup.config.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/rollup.config.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/webpack.config.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/webpack.config.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/GithubAPI.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/GithubAPI.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/RepoBot.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/RepoBot.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/api.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/api.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/check-build-version.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/check-build-version.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/contributors.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/contributors.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/githubAxios.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/githubAxios.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/injectContributorsList.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/injectContributorsList.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/pr.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/pr.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/ssl_hotfix.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/ssl_hotfix.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/axios.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/axios.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/utils.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/utils.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/client.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/client.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/actions/notify_published.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/actions/notify_published.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/colorize.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/colorize.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/parser.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/parser.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/get/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/get/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/post/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/post/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/postMultipartFormData/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/postMultipartFormData/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/upload/server.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/upload/server.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/adapters.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/adapters.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/http.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/http.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/xhr.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/xhr.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CancelToken.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CancelToken.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CanceledError.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CanceledError.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/isCancel.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/isCancel.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/Axios.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/Axios.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosError.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosError.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosHeaders.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosHeaders.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/InterceptorManager.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/InterceptorManager.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/buildFullPath.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/buildFullPath.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/dispatchRequest.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/dispatchRequest.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/mergeConfig.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/mergeConfig.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/settle.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/settle.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/transformData.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/transformData.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/transitional.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/transitional.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/data.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/data.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosTransformStream.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosTransformStream.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosURLSearchParams.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosURLSearchParams.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/HttpStatusCode.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/HttpStatusCode.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/ZlibHeaderTransformStream.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/ZlibHeaderTransformStream.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/bind.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/bind.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/buildURL.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/buildURL.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/callbackify.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/callbackify.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/combineURLs.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/combineURLs.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/cookies.js...\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/cookies.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/deprecatedMethod.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/deprecatedMethod.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToJSON.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToJSON.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToStream.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToStream.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/fromDataURI.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/fromDataURI.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAbsoluteURL.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAbsoluteURL.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAxiosError.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAxiosError.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isURLSameOrigin.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isURLSameOrigin.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/null.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/null.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseHeaders.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseHeaders.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseProtocol.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseProtocol.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/readBlob.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/readBlob.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/speedometer.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/speedometer.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/spread.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/spread.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/throttle.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/throttle.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toFormData.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toFormData.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toURLEncodedForm.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toURLEncodedForm.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/validator.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/validator.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/manual/promise.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/manual/promise.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/test.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/test.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/__helpers.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/__helpers.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/adapter.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/adapter.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/api.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/api.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/basicAuth.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/basicAuth.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/defaults.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/defaults.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/formdata.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/formdata.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/headers.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/headers.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/instance.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/instance.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/interceptors.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/interceptors.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/options.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/options.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/progress.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/progress.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/promise.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/promise.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/requests.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/requests.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/transform.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/transform.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/xsrf.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/xsrf.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/classes/FormData.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/classes/FormData.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/common/utils.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/common/utils.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/cjs/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/cjs/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/esm/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/esm/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.ts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.ts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.ts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CancelToken.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CancelToken.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CanceledError.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CanceledError.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/isCancel.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/isCancel.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/AxiosError.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/AxiosError.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/buildFullPath.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/buildFullPath.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/enhanceError.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/enhanceError.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/mergeConfig.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/mergeConfig.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/settle.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/settle.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/transformData.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/transformData.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/bind.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/bind.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/buildURL.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/buildURL.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/combineURLs.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/combineURLs.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/cookies.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/cookies.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/formDataToJSON.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/formDataToJSON.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAbsoluteURL.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAbsoluteURL.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAxiosError.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAxiosError.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isURLSameOrigin.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isURLSameOrigin.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/parseHeaders.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/parseHeaders.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/spread.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/spread.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/toFormData.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/toFormData.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/validator.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/validator.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/endsWith.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/endsWith.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/extend.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/extend.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/forEach.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/forEach.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/isX.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/isX.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOf.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOf.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOfTest.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOfTest.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/merge.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/merge.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toArray.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toArray.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toFlatObject.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toFlatObject.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/trim.spec.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/trim.spec.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/adapters.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/adapters.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/http.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/http.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/core/AxiosHeaders.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/core/AxiosHeaders.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/defaults/transformReponse.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/defaults/transformReponse.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/fromDataURI.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/fromDataURI.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/parseProtocol.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/parseProtocol.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/SNYK-JS-AXIOS-1038255.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/SNYK-JS-AXIOS-1038255.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/bugs.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/bugs.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/utils/utils.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/utils/utils.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/Blob.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/Blob.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/FormData.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/FormData.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/URLSearchParams.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/URLSearchParams.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/FormData.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/FormData.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/URLSearchParams.js...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/URLSearchParams.js\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/cjs/index.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/cjs/index.ts\n", + "\n", + "\n", + "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/esm/index.ts...\n", + "\n", + "\n", + "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/esm/index.ts\n", + "\n", + "\n", + "Merging db files...\n", + "\n", + "\n", + "2023-11-30 08:06:16,700 INFO: Finish extracting data source axios with javascript language Extractor, extraction is Success, execution time is 37.27s.\n", + "\n", + "\n", + "2023-11-30 08:06:16,700 INFO: extract success\n", + "\n", + "\n" + ] + } + ], + "source": [ + "!sparrow database create --source-root axios --data-language-type javascript --output ./db/axios --overwrite" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,或使用快捷键:`Shift+Enter`,直接运行分析脚本。这里使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "**示例** 查询 [axios](https://github.com/axios/axios.git) 函数级别的变更影响分析" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/workspaces/CodeFuse-Query/tutorial/notebook/db/axios\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mSparrow database is set to: /workspaces/CodeFuse-Query/tutorial/notebook/db/axios\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-11-30 08:06:18,884 INFO: sparrow 2.0.0\n", + " will start\n", + "2023-11-30 08:06:18,884 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db size: 20.82 MB\n", + "2023-11-30 08:06:18,885 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-5f14djn0/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmpytticwq5.gdl --verbose\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.318455 ms\u001b[0m] package scan\n", + "packages:\n", + "coref::cfamily -> /sparrow-cli/lib-1.0/coref.cfamily.gdl\n", + "coref::go -> /sparrow-cli/lib-1.0/coref.go.gdl\n", + "coref::java -> /sparrow-cli/lib-1.0/coref.java.gdl\n", + "coref::javascript -> /sparrow-cli/lib-1.0/coref.javascript.gdl\n", + "coref::properties -> /sparrow-cli/lib-1.0/coref.properties.gdl\n", + "coref::python -> /sparrow-cli/lib-1.0/coref.python.gdl\n", + "coref::sql -> /sparrow-cli/lib-1.0/coref.sql.gdl\n", + "coref::xml -> /sparrow-cli/lib-1.0/coref.xml.gdl\n", + "modules\n", + "+--coref -> coref\n", + "|--cfamily -> coref::cfamily\n", + "|--go -> coref::go\n", + "|--properties -> coref::properties\n", + "|--java -> coref::java\n", + "|--xml -> coref::xml\n", + "|--javascript -> coref::javascript\n", + "|--python -> coref::python\n", + "+--sql -> coref::sql\n", + "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 321.226 ms\u001b[0m] analyse \n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 73.0303 ms\u001b[0m] lexical analysis\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 88.8125 ms\u001b[0m] syntax parse\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 154.071 ms\u001b[0m] semantic analysis\n", + "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 424.938 ms\u001b[0m] analyse \n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.169767 ms\u001b[0m] lexical analysis\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.099356 ms\u001b[0m] syntax parse\n", + "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 423.992 ms\u001b[0m] semantic analysis\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.026108 ms\u001b[0m] ast lowering\n", + "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 0.08019 ms\u001b[0m] code generation\n", + "2023-11-30 08:06:19,350 INFO: godel-script compile time: 0.47s\n", + "2023-11-30 08:06:19,351 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmpytticwq5.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/axios --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-5f14djn0/query.json --verbose\n", + "Parse time: 0.322531sec\n", + "ComponentChecker time: 0.0539951sec [unchanged]\n", + "ComponentInstantiationTransformer time: 6.492e-06sec [changed]\n", + "IODefaultsTransformer time: 0.000682093sec [changed]\n", + "SimplifyAggregateTargetExpressionTransformer time: 0.0616513sec [unchanged]\n", + "UniqueAggregationVariablesTransformer time: 0.0257786sec [changed]\n", + "ResolveAnonymousRecordAliases time: 1.72321sec [unchanged]\n", + "FoldAnonymousRecords time: 0.0290812sec [unchanged]\n", + "GroundWitnessesTransformer time: 0.0264373sec [unchanged]\n", + "UniqueAggregationVariablesTransformer time: 0.0269212sec [unchanged]\n", + "MaterializeSingletonAggregationTransformer time: 0.0618322sec [unchanged]\n", + "MaterializeAggregationQueriesTransformer time: 0.0847883sec [changed]\n", + "MaterializeAggregationQueriesTransformer time: 0.0880564sec [unchanged]\n", + "RemoveRedundantSumsTransformer time: 0.0334785sec [unchanged]\n", + "NormaliseGeneratorsTransformer time: 0.033902sec [changed]\n", + "ResolveAliasesTransformer time: 0.212708sec [changed]\n", + "RemoveBooleanConstraintsTransformer time: 0.0932827sec [unchanged]\n", + "ResolveAliasesTransformer time: 0.153156sec [unchanged]\n", + "InlineUnmarkExcludedTransform time: 0.00666753sec [unchanged]\n", + "InlineRelationsTransformer time: 4.35275sec [changed]\n", + "GroundedTermsChecker time: 0.361505sec [unchanged]\n", + "ResolveAliasesTransformer time: 0.264989sec [changed]\n", + "RemoveRedundantRelationsTransformer time: 0.264423sec [changed]\n", + "RemoveRelationCopiesTransformer time: 0.0466181sec [changed]\n", + "RemoveEmptyRelationsTransformer time: 0.000674859sec [unchanged]\n", + "ReplaceSingletonVariablesTransformer time: 0.000762834sec [changed]\n", + "ReduceExistentialsTransformer time: 0.00158046sec [unchanged]\n", + "RemoveRedundantRelationsTransformer time: 0.001055sec [unchanged]\n", + "RemoveRelationCopiesTransformer time: 0.000154449sec [unchanged]\n", + "NameUnnamedVariablesTransformer time: 0.000635086sec [changed]\n", + "PartitionBodyLiteralsTransformer time: 0.00173047sec [unchanged]\n", + "ReplaceSingletonVariablesTransformer time: 0.00111812sec [changed]\n", + "NameUnnamedVariablesTransformer time: 0.000596213sec [changed]\n", + "ReplaceSingletonVariablesTransformer time: 0.00109794sec [changed]\n", + "RemoveRelationCopiesTransformer time: 0.00039625sec [unchanged]\n", + "RemoveEmptyRelationsTransformer time: 0.000318134sec [unchanged]\n", + "RemoveRedundantRelationsTransformer time: 0.00093184sec [unchanged]\n", + "RemoveRelationCopiesTransformer time: 0.000415616sec [unchanged]\n", + "ResolveAliasesTransformer time: 0.00175141sec [unchanged]\n", + "RemoveRelationCopiesTransformer time: 0.000151152sec [unchanged]\n", + "RemoveEmptyRelationsTransformer time: 0.000334474sec [unchanged]\n", + "RemoveRedundantRelationsTransformer time: 0.000918365sec [unchanged]\n", + "NameUnnamedVariablesTransformer time: 0.000581756sec [changed]\n", + "ReplaceSingletonVariablesTransformer time: 0.000948681sec [changed]\n", + "RemoveRelationCopiesTransformer time: 0.000388084sec [unchanged]\n", + "RemoveEmptyRelationsTransformer time: 0.000326269sec [unchanged]\n", + "RemoveRedundantRelationsTransformer time: 0.000937009sec [unchanged]\n", + "RemoveEmptyRelationsTransformer time: 0.00056788sec [unchanged]\n", + "AddNullariesToAtomlessAggregatesTransformer time: 0.000250267sec [unchanged]\n", + "ExecutionPlanChecker time: 0.00653227sec [unchanged]\n", + "IOAttributesTransformer time: 0.0022946sec [changed]\n", + "ExpandFilterTransformer time: 0.000583058sec [unchanged]\n", + "HoistConditionsTransformer time: 0.00351101sec [changed]\n", + "MakeIndexTransformer time: 0.00182146sec [changed]\n", + "ExpandFilterTransformer time: 0.000903096sec [changed]\n", + "HoistConditionsTransformer time: 0.00303112sec [changed]\n", + "MakeIndexTransformer time: 0.00118225sec [unchanged]\n", + "IfConversionTransformer time: 0.000926129sec [changed]\n", + "IfExistsConversionTransformer time: 0.00153311sec [changed]\n", + "CollapseFiltersTransformer time: 0.000576507sec [changed]\n", + "TupleIdTransformer time: 0.000705397sec [changed]\n", + "HoistAggregateTransformer time: 0.00174991sec [unchanged]\n", + "TupleIdTransformer time: 0.000843084sec [unchanged]\n", + "ExpandFilterTransformer time: 0.000961545sec [changed]\n", + "HoistConditionsTransformer time: 0.00345245sec [changed]\n", + "CollapseFiltersTransformer time: 0.000573771sec [unchanged]\n", + "EliminateDuplicatesTransformer time: 0.000696891sec [changed]\n", + "ReorderConditionsTransformer time: 0.00239002sec [changed]\n", + "ReorderFilterBreak time: 0.00047662sec [unchanged]\n", + "ReportIndexTransformer time: 0.00252848sec [unchanged]\n", + "Starting work on AllData_DBIndex([1,1]). in file [33021:1-33021:25]\n", + "Starting work on AllData_S_20N_5coref10javascript_10CallSiteDO([1,1],invoke_expression_oid,callee_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10CallSiteDO(invoke_expression_oid,callee_oid). in file [33013:1-33013:217]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_10CallSiteDO(db_id,item) :- AllData_S_20N_5coref10javascript_10CallSiteDO(db_id,item,_). in file [19242:1-19242:127]\n", + "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10CallSiteDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_10CallSiteDO(db,__temp_3), AllData_DBIndex(db). in file [25266:1-25266:571]\n", + "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(__temp_3,db,__temp_1,__temp_3) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,__temp_3,__temp_1), DataConstraintHelper_f_37S_20N_5coref10javascript_10CallSiteDO_7__all__(__temp_3,db,_,_), AllData_DBIndex(db). in file [29708:1-29708:559]\n", + "Starting work on AllData_S_20N_5coref10javascript_8CallSite(db_id,callee_oid,invoke_expression_oid) :- DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(_,db_id,callee_oid,invoke_expression_oid). in file [33686:1-33686:203]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_8CallSite(db_id,item) :- AllData_S_20N_5coref10javascript_8CallSite(db_id,_,item). in file [19399:1-19399:121]\n", + "Starting work on f_37S_20N_5coref10javascript_10CallSiteDO_12getCalleeOid(__temp,self) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_10CallSiteDO(_,self). in file [25267:1-25267:226]\n", + "Starting work on f_34S_20N_5coref10javascript_8CallSite_12getCalleeOid(__temp_3,self) :- AllData_S_20N_5coref10javascript_8CallSite(_,_,self), f_37S_20N_5coref10javascript_10CallSiteDO_12getCalleeOid(__temp_3,self), TypeCheck_S_20N_5coref10javascript_8CallSite(_,self). in file [22664:1-22664:491]\n", + "Starting work on AllData_S_20N_5coref10javascript_6NodeDO([1,1],oid,kind,parent_oid,index,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_6NodeDO(oid,kind,parent_oid,index,location_oid). in file [33001:1-33001:225]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_6NodeDO(db_id,item) :- AllData_S_20N_5coref10javascript_6NodeDO(db_id,item,_,_,_,_). in file [28721:1-28721:126]\n", + "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_6,db,__temp_6,__temp_1,__temp_2,__temp_3,__temp_4) :- AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,_,_,__temp_4), TypeCheck_S_20N_5coref10javascript_6NodeDO(db,__temp_6), AllData_DBIndex(db). in file [21616:1-21616:803]\n", + "Starting work on f_32S_20N_5coref10javascript_6NodeDO_7getKind(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,__temp,_,_,_), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21617:1-21617:198]\n", + "Starting work on f_32S_20N_5coref10javascript_6NodeDO_12getParentOid(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,_,__temp,_,_), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21618:1-21618:211]\n", + "Starting work on f_32S_20N_5coref10javascript_6NodeDO_14getLocationOid(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,_,_,_,__temp), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21620:1-21620:215]\n", + "Starting work on AllData_S_20N_5coref10javascript_10TopLevelDO([1,1],oid,kind,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10TopLevelDO(oid,kind,location_oid). in file [33000:1-33000:197]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_10TopLevelDO(db_id,item) :- AllData_S_20N_5coref10javascript_10TopLevelDO(db_id,item,_,_). in file [31362:1-31362:130]\n", + "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_4,db,__temp_4,__temp_1,__temp_2) :- AllData_S_20N_5coref10javascript_10TopLevelDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_10TopLevelDO(_,__temp_4,_,__temp_2), TypeCheck_S_20N_5coref10javascript_10TopLevelDO(db,__temp_4), AllData_DBIndex(db). in file [21266:1-21266:608]\n", + "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,__temp_2) :- DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_2,db,_,_,_,_,_), AllData_DBIndex(db). in file [27863:1-27863:352]\n", + "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,__temp_2) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_2,db,_,_,_), AllData_DBIndex(db). in file [27864:1-27864:370]\n", + "Starting work on AllData_S_20N_5coref10javascript_4Node(db_id,id) :- DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(_,db_id,id). in file [33780:1-33780:133]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_7getKind(__temp_2,__temp_3) :- f_32S_20N_5coref10javascript_6NodeDO_7getKind(__temp_2,__temp_3), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_3,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_3). in file [27865:1-27865:421]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_7getKind(303,__temp_2) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_2). in file [27866:1-27866:369]\n", + "Starting work on f_20N_5coref10javascript_14isAsExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 228, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19806:1-19806:184]\n", + "Starting work on f_20N_5coref10javascript_15isArrowFunction(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 213, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27361:1-27361:185]\n", + "Starting work on f_20N_5coref10javascript_15isJsxExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 287, AllData_S_20N_5coref10javascript_4Node(_,node). in file [24696:1-24696:185]\n", + "Starting work on f_20N_5coref10javascript_15isSpreadElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 224, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30226:1-30226:185]\n", + "Starting work on f_20N_5coref10javascript_16isVoidExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 216, AllData_S_20N_5coref10javascript_4Node(_,node). in file [26016:1-26016:186]\n", + "Starting work on f_20N_5coref10javascript_17isAwaitExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 217, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29202:1-29202:187]\n", + "Starting work on f_20N_5coref10javascript_18isDeleteExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 214, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29800:1-29800:188]\n", + "Starting work on f_20N_5coref10javascript_18isTypeOfExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 215, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27142:1-27142:188]\n", + "Starting work on f_20N_5coref10javascript_23isPrefixUnaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 218, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17854:1-17854:193]\n", + "Starting work on f_20N_5coref10javascript_16isCallExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 207, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30235:1-30235:186]\n", + "Starting work on f_20N_5coref10javascript_12isIdentifier(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 79, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18013:1-18013:181]\n", + "Starting work on f_20N_5coref10javascript_12isJsxElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 277, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29700:1-29700:182]\n", + "Starting work on f_20N_5coref10javascript_13isJsxFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 281, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27143:1-27143:183]\n", + "Starting work on f_20N_5coref10javascript_13isNullKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 104, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32737:1-32737:183]\n", + "Starting work on f_20N_5coref10javascript_13isNullLiteral(node) :- f_20N_5coref10javascript_13isNullKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25380:1-25380:158]\n", + "Starting work on f_20N_5coref10javascript_14isMetaProperty(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 230, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31400:1-31400:184]\n", + "Starting work on f_20N_5coref10javascript_15isJsxAttributes(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 285, AllData_S_20N_5coref10javascript_4Node(_,node). in file [28545:1-28545:185]\n", + "Starting work on f_20N_5coref10javascript_15isNewExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 208, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19398:1-19398:185]\n", + "Starting work on f_20N_5coref10javascript_13isTrueKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 110, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18120:1-18120:183]\n", + "Starting work on f_20N_5coref10javascript_14isFalseKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 95, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22647:1-22647:183]\n", + "Starting work on f_20N_5coref10javascript_16isBooleanLiteral(node) :- f_20N_5coref10javascript_13isTrueKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [21097:1-21097:161]\n", + "Starting work on f_20N_5coref10javascript_16isBooleanLiteral(node) :- f_20N_5coref10javascript_14isFalseKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [21098:1-21098:162]\n", + "Starting work on f_20N_5coref10javascript_13isThisKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 108, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22002:1-22002:183]\n", + "Starting work on f_20N_5coref10javascript_16isThisExpression(node) :- f_20N_5coref10javascript_13isThisKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [26893:1-26893:161]\n", + "Starting work on f_20N_5coref10javascript_17isClassExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 225, AllData_S_20N_5coref10javascript_4Node(_,node). in file [24805:1-24805:187]\n", + "Starting work on f_20N_5coref10javascript_14isSuperKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 106, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23826:1-23826:184]\n", + "Starting work on f_20N_5coref10javascript_17isSuperExpression(node) :- f_20N_5coref10javascript_14isSuperKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [32044:1-32044:163]\n", + "Starting work on f_20N_5coref10javascript_15isImportKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 100, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31027:1-31027:185]\n", + "Starting work on f_20N_5coref10javascript_15isBigIntLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 9, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30175:1-30175:183]\n", + "Starting work on f_20N_5coref10javascript_15isStringLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 10, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17408:1-17408:184]\n", + "Starting work on f_20N_5coref10javascript_16isNumericLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 8, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25947:1-25947:184]\n", + "Starting work on f_20N_5coref10javascript_26isRegularExpressionLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 13, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22641:1-22641:195]\n", + "Starting work on f_20N_5coref10javascript_31isNoSubstitutionTemplateLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 14, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17577:1-17577:200]\n", + "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_16isNumericLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19441:1-19441:167]\n", + "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_15isBigIntLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19442:1-19442:166]\n", + "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_15isStringLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19443:1-19443:166]\n", + "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_26isRegularExpressionLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19444:1-19444:177]\n", + "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_31isNoSubstitutionTemplateLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19445:1-19445:182]\n", + "Starting work on f_20N_5coref10javascript_19isPrivateIdentifier(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 80, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17747:1-17747:188]\n", + "Starting work on f_20N_5coref10javascript_20isFunctionExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 212, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19397:1-19397:190]\n", + "Starting work on f_20N_5coref10javascript_20isTemplateExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 222, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20106:1-20106:190]\n", + "Starting work on f_20N_5coref10javascript_23isJsxSelfClosingElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 278, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32444:1-32444:193]\n", + "Starting work on f_20N_5coref10javascript_24isArrayLiteralExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 203, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25569:1-25569:194]\n", + "Starting work on f_20N_5coref10javascript_25isObjectLiteralExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 204, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31871:1-31871:195]\n", + "Starting work on f_20N_5coref10javascript_25isParenthesizedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 211, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25685:1-25685:195]\n", + "Starting work on f_20N_5coref10javascript_25isElementAccessExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 206, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25036:1-25036:195]\n", + "Starting work on f_20N_5coref10javascript_26isPropertyAccessExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 205, AllData_S_20N_5coref10javascript_4Node(_,node). in file [28244:1-28244:196]\n", + "Starting work on f_20N_5coref10javascript_18isAccessExpression(node) :- f_20N_5coref10javascript_26isPropertyAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22659:1-22659:176]\n", + "Starting work on f_20N_5coref10javascript_18isAccessExpression(node) :- f_20N_5coref10javascript_25isElementAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22660:1-22660:175]\n", + "Starting work on f_20N_5coref10javascript_26isTaggedTemplateExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 209, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18948:1-18948:196]\n", + "Starting work on f_20N_5coref10javascript_19isNonNullExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 229, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31148:1-31148:189]\n", + "Starting work on f_20N_5coref10javascript_28isPartiallyEmittedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 348, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18458:1-18458:198]\n", + "Starting work on f_20N_5coref10javascript_30isSyntheticReferenceExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 352, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20370:1-20370:200]\n", + "Starting work on f_20N_5coref10javascript_24isPostfixUnaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 219, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32842:1-32842:194]\n", + "Starting work on f_20N_5coref10javascript_25isTypeAssertionExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 210, AllData_S_20N_5coref10javascript_4Node(_,node). in file [16806:1-16806:195]\n", + "Starting work on f_20N_5coref10javascript_17isYieldExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 223, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29703:1-29703:187]\n", + "Starting work on f_20N_5coref10javascript_18isBinaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 220, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17664:1-17664:188]\n", + "Starting work on f_20N_5coref10javascript_19isJsxClosingElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 280, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29843:1-29843:189]\n", + "Starting work on f_20N_5coref10javascript_19isJsxOpeningElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 279, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23102:1-23102:189]\n", + "Starting work on f_20N_5coref10javascript_19isOmittedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 226, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32498:1-32498:189]\n", + "Starting work on f_20N_5coref10javascript_20isJsxClosingFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 283, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20001:1-20001:190]\n", + "Starting work on f_20N_5coref10javascript_20isJsxOpeningFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 282, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20874:1-20874:190]\n", + "Starting work on f_20N_5coref10javascript_21isCommaListExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 349, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17298:1-17298:191]\n", + "Starting work on f_20N_5coref10javascript_21isSyntheticExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 231, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23938:1-23938:191]\n", + "Starting work on f_20N_5coref10javascript_23isConditionalExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 221, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18951:1-18951:193]\n", + "Starting work on f_20N_5coref10javascript_11isDecorator(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 164, AllData_S_20N_5coref10javascript_4Node(_,node). in file [26121:1-26121:181]\n", + "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_16isCallExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22040:1-22040:168]\n", + "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_15isNewExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22041:1-22041:167]\n", + "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_26isTaggedTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22042:1-22042:178]\n", + "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_11isDecorator(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22043:1-22043:163]\n", + "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_19isJsxOpeningElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22044:1-22044:171]\n", + "Starting work on f_20N_5coref10javascript_21isMayInvokeExpression(node) :- f_20N_5coref10javascript_20isCallLikeExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18008:1-18008:173]\n", + "Starting work on f_20N_5coref10javascript_21isMayInvokeExpression(node) :- f_20N_5coref10javascript_18isAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18009:1-18009:171]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_12getParentOid(__temp_2,__temp_3) :- f_32S_20N_5coref10javascript_6NodeDO_12getParentOid(__temp_2,__temp_3), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_3,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_3). in file [27867:1-27867:433]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_9getParent(__temp,self) :- f_30S_20N_5coref10javascript_4Node_12getParentOid(__temp,self), AllData_S_20N_5coref10javascript_4Node(_,__temp), AllData_S_20N_5coref10javascript_4Node(_,self). in file [27868:1-27868:312]\n", + "Starting work on f_20N_5coref10javascript_18isImportExpression(node) :- f_20N_5coref10javascript_15isImportKeyword(node), f_30S_20N_5coref10javascript_4Node_9getParent(__temp,node), f_20N_5coref10javascript_16isCallExpression(__temp), AllData_S_20N_5coref10javascript_4Node(_,__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18793:1-18793:349]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_19isLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25194:1-25194:170]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_13isNullLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25195:1-25195:164]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_16isBooleanLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25196:1-25196:167]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_12isIdentifier(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25197:1-25197:163]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_19isPrivateIdentifier(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25198:1-25198:170]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_16isThisExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25199:1-25199:167]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_17isSuperExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25200:1-25200:168]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_18isImportExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25201:1-25201:169]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_24isArrayLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25202:1-25202:175]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_25isObjectLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25203:1-25203:176]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_15isJsxAttributes(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25204:1-25204:166]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_15isNewExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25205:1-25205:166]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_25isParenthesizedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25206:1-25206:176]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_20isFunctionExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25207:1-25207:171]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_20isTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25208:1-25208:171]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_17isClassExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25209:1-25209:168]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_14isMetaProperty(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25210:1-25210:165]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_12isJsxElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25211:1-25211:163]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_23isJsxSelfClosingElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25212:1-25212:174]\n", + "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_13isJsxFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25213:1-25213:164]\n", + "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_19isPrimaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16965:1-16965:169]\n", + "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_26isPropertyAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16966:1-16966:176]\n", + "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_25isElementAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16967:1-16967:175]\n", + "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_26isTaggedTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16968:1-16968:176]\n", + "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_18isMemberExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22653:1-22653:174]\n", + "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_28isPartiallyEmittedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22654:1-22654:184]\n", + "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_16isCallExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22655:1-22655:172]\n", + "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_19isNonNullExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22656:1-22656:175]\n", + "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_30isSyntheticReferenceExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22657:1-22657:186]\n", + "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_24isLeftHandSideExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25696:1-25696:174]\n", + "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_23isPrefixUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25697:1-25697:173]\n", + "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_24isPostfixUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25698:1-25698:174]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isUpdateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22738:1-22738:167]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_25isTypeAssertionExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22739:1-22739:174]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isDeleteExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22740:1-22740:167]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isTypeOfExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22741:1-22741:167]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_16isVoidExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22742:1-22742:165]\n", + "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_17isAwaitExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22743:1-22743:166]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_17isUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18558:1-18558:161]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isArrowFunction(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18559:1-18559:159]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_18isBinaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18560:1-18560:162]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_23isConditionalExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18561:1-18561:167]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_17isYieldExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18562:1-18562:161]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isSpreadElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18563:1-18563:159]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isOmittedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18564:1-18564:163]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_14isAsExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18565:1-18565:158]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_21isSyntheticExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18566:1-18566:165]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_21isCommaListExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18567:1-18567:165]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isJsxOpeningElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18568:1-18568:163]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isJsxClosingElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18569:1-18569:163]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_20isJsxOpeningFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18570:1-18570:164]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_20isJsxClosingFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18571:1-18571:164]\n", + "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isJsxExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18572:1-18572:159]\n", + "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(__temp_2,db,__temp_2) :- f_20N_5coref10javascript_12isExpression(__temp_2), DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,_), AllData_DBIndex(db). in file [18947:1-18947:394]\n", + "Starting work on AllData_S_20N_5coref10javascript_10Expression(db_id,id) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(_,db_id,id). in file [33764:1-33764:147]\n", + "Starting work on DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp_4,db,__temp_4) :- f_20N_5coref10javascript_21isMayInvokeExpression(__temp_4), DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(__temp_4,db,_), AllData_DBIndex(db). in file [24223:1-24223:542]\n", + "Starting work on AllData_S_20N_5coref10javascript_19MayInvokeExpression(db_id,id) :- DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(_,db_id,id). in file [33881:1-33881:165]\n", + "Starting work on f_37S_20N_5coref10javascript_10TopLevelDO_14getLocationOid(__temp,self) :- AllData_S_20N_5coref10javascript_10TopLevelDO(_,self,_,__temp), TypeCheck_S_20N_5coref10javascript_10TopLevelDO(_,self). in file [21268:1-21268:230]\n", + "Starting work on AllData_S_20N_5coref10javascript_10LocationDO([1,1],oid,file_oid,start_line_number,start_column_number,end_line_number,end_column_number,text) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10LocationDO(oid,file_oid,start_line_number,start_column_number,end_line_number,end_column_number,text). in file [32995:1-32995:341]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_10LocationDO(db_id,item) :- AllData_S_20N_5coref10javascript_10LocationDO(db_id,item,_,_,_,_,_,_). in file [21270:1-21270:142]\n", + "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10LocationDO_7__all__(__temp_8,db,__temp_8,__temp_1,__temp_2,__temp_3,__temp_4,__temp_5,__temp_6) :- AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,__temp_1,_,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,__temp_3,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,__temp_4,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,__temp_5,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,_,__temp_6), TypeCheck_S_20N_5coref10javascript_10LocationDO(db,__temp_8), AllData_DBIndex(db). in file [22203:1-22203:1170]\n", + "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_8,db,__temp_5,__temp_4,__temp_1,__temp_8,__temp_3,__temp_2,__temp_6) :- AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,__temp_1,_,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,__temp_3,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,__temp_4,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,__temp_5,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,_,__temp_6), DataConstraintHelper_f_37S_20N_5coref10javascript_10LocationDO_7__all__(__temp_8,db,_,_,_,_,_,_,_), AllData_DBIndex(db). in file [23326:1-23326:1159]\n", + "Starting work on AllData_S_20N_5coref10javascript_8Location(db_id,end_column_number,end_line_number,file_oid,oid,start_column_number,start_line_number,text) :- DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(_,db_id,end_column_number,end_line_number,file_oid,oid,start_column_number,start_line_number,text). in file [33914:1-33914:327]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_8Location(db_id,item) :- AllData_S_20N_5coref10javascript_8Location(db_id,_,_,_,item,_,_,_). in file [30574:1-30574:136]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_4,__temp_5) :- f_32S_20N_5coref10javascript_6NodeDO_14getLocationOid(__temp_4,__temp_5), DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_4,_,_,_,_,_,_,_,_), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_5,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_5). in file [27870:1-27870:608]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_4,__temp_5) :- f_37S_20N_5coref10javascript_10TopLevelDO_14getLocationOid(__temp_4,__temp_5), DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_4,_,_,_,_,_,_,_,_), DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_5,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_5). in file [27871:1-27871:635]\n", + "Starting work on f_37S_20N_5coref10javascript_10LocationDO_10getFileOid(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,__temp,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22204:1-22204:221]\n", + "Starting work on f_34S_20N_5coref10javascript_8Location_10getFileOid(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_10getFileOid(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32025:1-32025:985]\n", + "Starting work on f_37S_20N_5coref10javascript_10LocationDO_16getEndLineNumber(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,_,_,_,__temp,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22207:1-22207:235]\n", + "Starting work on f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_16getEndLineNumber(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32024:1-32024:997]\n", + "Starting work on f_37S_20N_5coref10javascript_10LocationDO_18getStartLineNumber(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,_,__temp,_,_,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22205:1-22205:239]\n", + "Starting work on f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_18getStartLineNumber(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32027:1-32027:1001]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(0,0,168). in file [16915:1-16915:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(1,1,170). in file [16916:1-16916:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(2,2,171). in file [16917:1-16917:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(3,3,172). in file [16918:1-16918:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(4,4,212). in file [16919:1-16919:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(5,5,213). in file [16920:1-16920:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(6,6,255). in file [16921:1-16921:183]\n", + "Starting work on AllData_S_20N_5coref10javascript_17fact_temp_set_650(db_id,uid,e0) :- DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(_,uid,e0), AllData_DBIndex(db_id). in file [33656:1-33656:190]\n", + "Starting work on f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(__temp) :- AllData_S_20N_5coref10javascript_17fact_temp_set_650(_,__temp_1,__temp), DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(__temp_1,_,_). in file [22639:1-22639:277]\n", + "Starting work on f_20N_5coref10javascript_25isFunctionLikeDeclaration(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [29847:1-29847:260]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(0,0,167). in file [21258:1-21258:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(1,1,173). in file [21259:1-21259:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(2,2,174). in file [21260:1-21260:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(3,3,175). in file [21261:1-21261:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(4,4,178). in file [21262:1-21262:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(5,5,179). in file [21263:1-21263:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(6,6,315). in file [21264:1-21264:183]\n", + "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(7,7,321). in file [21265:1-21265:183]\n", + "Starting work on AllData_S_20N_5coref10javascript_17fact_temp_set_634(db_id,uid,e0) :- DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(_,uid,e0), AllData_DBIndex(db_id). in file [33715:1-33715:190]\n", + "Starting work on f_20N_5coref10javascript_29isFunctionTypeOrSignatureKind(__temp) :- AllData_S_20N_5coref10javascript_17fact_temp_set_634(_,__temp_1,__temp), DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(__temp_1,_,_). in file [22603:1-22603:277]\n", + "Starting work on f_20N_5coref10javascript_18isFunctionLikeKind(kind) :- f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(kind). in file [19875:1-19875:128]\n", + "Starting work on f_20N_5coref10javascript_18isFunctionLikeKind(kind) :- f_20N_5coref10javascript_29isFunctionTypeOrSignatureKind(kind). in file [19876:1-19876:128]\n", + "Starting work on f_20N_5coref10javascript_14isFunctionLike(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), f_20N_5coref10javascript_18isFunctionLikeKind(__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [28546:1-28546:238]\n", + "Starting work on DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(__temp_2,db,__temp_2) :- f_20N_5coref10javascript_14isFunctionLike(__temp_2), DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,_), AllData_DBIndex(db). in file [22281:1-22281:398]\n", + "Starting work on AllData_S_20N_5coref10javascript_12FunctionLike(db_id,id) :- DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(_,db_id,id). in file [33575:1-33575:151]\n", + "Starting work on f_39S_20N_5coref10javascript_12FunctionLike_11getLocation(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_2,self), AllData_S_20N_5coref10javascript_12FunctionLike(_,self). in file [26883:1-26883:336]\n", + "Starting work on DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_4,db,__temp_4) :- f_20N_5coref10javascript_25isFunctionLikeDeclaration(__temp_4), DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(__temp_4,db,_), AllData_DBIndex(db). in file [19518:1-19518:556]\n", + "Starting work on AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(db_id,id) :- DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(_,db_id,id). in file [33668:1-33668:173]\n", + "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_2,self) :- f_39S_20N_5coref10javascript_12FunctionLike_11getLocation(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,self). in file [28126:1-28126:378]\n", + "Starting work on f_34S_20N_5coref10javascript_8CallSite_9getCallee(__temp_2,self) :- f_34S_20N_5coref10javascript_8CallSite_12getCalleeOid(__temp_2,self), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_2,_,_), TypeCheck_S_20N_5coref10javascript_8CallSite(_,self). in file [29709:1-29709:409]\n", + "Starting work on f_46S_20N_5coref10javascript_19MayInvokeExpression_9getCallee(__temp_2,self) :- f_34S_20N_5coref10javascript_8CallSite_9getCallee(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp_2), DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(self,_,_,_), AllData_S_20N_5coref10javascript_19MayInvokeExpression(_,self). in file [24224:1-24224:594]\n", + "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_12getACallSite(__temp_1,__temp) :- f_46S_20N_5coref10javascript_19MayInvokeExpression_9getCallee(__temp,__temp_1), DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp_1,_,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp). in file [19536:1-19536:370]\n", + "Starting work on AllData_S_20N_5coref10javascript_12NodeSymbolDO([1,1],node_oid,symbol_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_12NodeSymbolDO(node_oid,symbol_oid). in file [33011:1-33011:195]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(db_id,item) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(db_id,item,_). in file [30582:1-30582:131]\n", + "Starting work on DataConstraintHelper_f_39S_20N_5coref10javascript_12NodeSymbolDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(db,__temp_3), AllData_DBIndex(db). in file [22038:1-22038:527]\n", + "Starting work on f_39S_20N_5coref10javascript_12NodeSymbolDO_12getSymbolOid(__temp,self) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(_,self). in file [22039:1-22039:232]\n", + "Starting work on AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO([1,1],node_oid,function_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(node_oid,function_oid). in file [33008:1-33008:221]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db_id,item) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db_id,item,_). in file [32300:1-32300:153]\n", + "Starting work on DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db,__temp_3), AllData_DBIndex(db). in file [23183:1-23183:578]\n", + "Starting work on f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_14getFunctionOid(__temp,self) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,self). in file [23184:1-23184:269]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_20getEnclosingFunction(__temp_5,__temp_4) :- f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_14getFunctionOid(__temp_5,__temp_4), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_7__all__(__temp_4,_,_,_), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_5,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_4). in file [27891:1-27891:752]\n", + "Starting work on f_37S_20N_5coref10javascript_10Expression_20getEnclosingFunction(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_20getEnclosingFunction(__temp_2,self), AllData_S_20N_5coref10javascript_10Expression(_,self). in file [22585:1-22585:348]\n", + "Starting work on f_46S_20N_5coref10javascript_19MayInvokeExpression_20getEnclosingFunction(__temp_2,self) :- f_37S_20N_5coref10javascript_10Expression_20getEnclosingFunction(__temp_2,self), AllData_S_20N_5coref10javascript_19MayInvokeExpression(_,self). in file [20927:1-20927:382]\n", + "Starting work on AllData_S_20N_5coref10javascript_6FileDO([1,1],oid,name,extension,relative_path,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_6FileDO(oid,name,extension,relative_path,location_oid). in file [32997:1-32997:239]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_6FileDO(db_id,item) :- AllData_S_20N_5coref10javascript_6FileDO(db_id,item,_,_,_,_). in file [32306:1-32306:126]\n", + "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6FileDO_7__all__(__temp_6,db,__temp_6,__temp_1,__temp_2,__temp_3,__temp_4) :- AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,_,__temp_4), TypeCheck_S_20N_5coref10javascript_6FileDO(db,__temp_6), AllData_DBIndex(db). in file [26743:1-26743:824]\n", + "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp_6,db,__temp_2,__temp_4,__temp_1,__temp_6,__temp_3) :- AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,_,__temp_4), DataConstraintHelper_f_32S_20N_5coref10javascript_6FileDO_7__all__(__temp_6,db,_,_,_,_,_), AllData_DBIndex(db). in file [31979:1-31979:813]\n", + "Starting work on AllData_S_20N_5coref10javascript_4File(db_id,extension,location_oid,name,oid,relative_path) :- DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(_,db_id,extension,location_oid,name,oid,relative_path). in file [33619:1-33619:227]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_4File(db_id,item) :- AllData_S_20N_5coref10javascript_4File(db_id,_,_,_,item,_). in file [29719:1-29719:122]\n", + "Starting work on f_34S_20N_5coref10javascript_8Location_7getFile(__temp_2,self) :- f_34S_20N_5coref10javascript_8Location_10getFileOid(__temp_2,self), DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp_2,_,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [23327:1-23327:360]\n", + "Starting work on f_32S_20N_5coref10javascript_6FileDO_15getRelativePath(__temp,self) :- AllData_S_20N_5coref10javascript_6FileDO(_,self,_,_,__temp,_), TypeCheck_S_20N_5coref10javascript_6FileDO(_,self). in file [26746:1-26746:217]\n", + "Starting work on f_30S_20N_5coref10javascript_4File_15getRelativePath(__temp_6,self) :- AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), f_32S_20N_5coref10javascript_6FileDO_15getRelativePath(__temp_6,self), TypeCheck_S_20N_5coref10javascript_4File(_,self). in file [24731:1-24731:712]\n", + "Starting work on f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_1,self) :- f_34S_20N_5coref10javascript_8Location_7getFile(__temp,self), f_30S_20N_5coref10javascript_4File_15getRelativePath(__temp_1,__temp), DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp,_,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [23328:1-23328:427]\n", + "Starting work on AllData_S_20N_5coref10javascript_8SymbolDO([1,1],oid,name,description) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_8SymbolDO(oid,name,description). in file [33010:1-33010:189]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_8SymbolDO(db_id,item) :- AllData_S_20N_5coref10javascript_8SymbolDO(db_id,item,_,_). in file [25188:1-25188:124]\n", + "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8SymbolDO_7__all__(__temp_4,db,__temp_4,__temp_1,__temp_2) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,_,__temp_2), TypeCheck_S_20N_5coref10javascript_8SymbolDO(db,__temp_4), AllData_DBIndex(db). in file [29483:1-29483:591]\n", + "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(__temp_4,db,__temp_2,__temp_1,__temp_4) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,_,__temp_2), DataConstraintHelper_f_34S_20N_5coref10javascript_8SymbolDO_7__all__(__temp_4,db,_,_,_), AllData_DBIndex(db). in file [18787:1-18787:579]\n", + "Starting work on AllData_S_20N_5coref10javascript_6Symbol(db_id,description,name,oid) :- DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(_,db_id,description,name,oid). in file [33507:1-33507:177]\n", + "Starting work on TypeCheck_S_20N_5coref10javascript_6Symbol(db_id,item) :- AllData_S_20N_5coref10javascript_6Symbol(db_id,_,_,item). in file [24851:1-24851:120]\n", + "Starting work on f_30S_20N_5coref10javascript_4Node_9getSymbol(__temp_5,__temp_4) :- f_39S_20N_5coref10javascript_12NodeSymbolDO_12getSymbolOid(__temp_5,__temp_4), DataConstraintHelper_f_39S_20N_5coref10javascript_12NodeSymbolDO_7__all__(__temp_4,_,_,_), DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(__temp_5,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_4). in file [27897:1-27897:631]\n", + "Starting work on f_39S_20N_5coref10javascript_12FunctionLike_9getSymbol(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_9getSymbol(__temp_2,self), AllData_S_20N_5coref10javascript_12FunctionLike(_,self). in file [26891:1-26891:330]\n", + "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp_2,self) :- f_39S_20N_5coref10javascript_12FunctionLike_9getSymbol(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,self). in file [28133:1-28133:372]\n", + "Starting work on f_34S_20N_5coref10javascript_8SymbolDO_14getDescription(__temp,self) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,self,_,__temp), TypeCheck_S_20N_5coref10javascript_8SymbolDO(_,self). in file [29485:1-29485:220]\n", + "Starting work on f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_4,self) :- AllData_S_20N_5coref10javascript_6Symbol(_,_,_,self), AllData_S_20N_5coref10javascript_6Symbol(_,_,_,self), f_34S_20N_5coref10javascript_8SymbolDO_14getDescription(__temp_4,self), TypeCheck_S_20N_5coref10javascript_6Symbol(_,self). in file [18615:1-18615:519]\n", + "Starting work on f_0_10default_db([1,1]). in file [21967:1-21967:64]\n", + "Starting work on f_0_18getACallerFunction(function,__temp_1) :- f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_12getACallSite(__temp,function), f_46S_20N_5coref10javascript_19MayInvokeExpression_20getEnclosingFunction(__temp_1,__temp), f_0_10default_db(__temp_2), DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp,__temp_2,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp_1). in file [30108:1-30108:612]\n", + "Starting work on f_0_21getAnEffectedFunction(function,effectedFunction) :- f_0_18getACallerFunction(function,effectedFunction), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [18333:1-18333:280]\n", + "Starting work on f_0_21getAnEffectedFunction(function,effectedFunction) :- f_0_18getACallerFunction(function,__temp_1), f_0_21getAnEffectedFunction(__temp_1,effectedFunction), f_0_10default_db(__temp), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_1,__temp,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [18334:1-18334:477]\n", + ".....\n", + "Starting work on f_0_3out(function,__temp_4,__temp_6,__temp_7,__temp_8,effectedFunction,__temp_5,__temp_9,__temp_10,__temp_11) :- f_0_21getAnEffectedFunction(function,effectedFunction), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp,function), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp_1,effectedFunction), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_2,function), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_3,effectedFunction), f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_4,__temp), f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_5,__temp_1), f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_6,__temp_2), f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_7,__temp_2), f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_8,__temp_2), f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_9,__temp_3), f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_10,__temp_3), f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_11,__temp_3), TypeCheck_S_20N_5coref10javascript_8Location(_,__temp_3), TypeCheck_S_20N_5coref10javascript_8Location(_,__temp_2), TypeCheck_S_20N_5coref10javascript_6Symbol(_,__temp_1), TypeCheck_S_20N_5coref10javascript_6Symbol(_,__temp), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [28171:1-28171:1960]\n", + "Starting work on out(function,signature,functionPath,startLine,endLine,effectedFunction,effectedSignature,effectedFunctionPath,effectedStartLine,effectedEndLine) :- f_0_3out(function,signature,functionPath,startLine,endLine,effectedFunction,effectedSignature,effectedFunctionPath,effectedStartLine,effectedEndLine). in file [33918:1-33918:317]\n", + "Total time: 9.64521sec\n", + "2023-11-30 08:06:34,659 INFO: Task /tmp/godel-jupyter-5f14djn0/query.gdl is success, result is NOT-EMPTY, execution time is 15.77s.\n", + "2023-11-30 08:06:34,659 INFO: run success\n", + "\n", + "Total results: 929\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
functionsignaturefunctionPathstartLineendLineeffectedFunctioneffectedSignatureeffectedFunctionPatheffectedStartLineeffectedEndLine
0-9156169672968821161(method) AxiosHeaders.from(thing: any): AxiosH...lib/core/AxiosHeaders.js248250-8249170294854635473(local function) onAdapterRejection(reason: an...lib/core/dispatchRequest.js6480
1-9156169672968821161(method) AxiosHeaders.from(thing: any): AxiosH...lib/core/AxiosHeaders.js2482501405045491285225472(local function) onloadend(): voidlib/adapters/xhr.js92121
2-9156169672968821161(method) AxiosHeaders.from(thing: any): AxiosH...lib/core/AxiosHeaders.js2482501808319753094699064(local function) dispatchHttpRequest(resolve: ...lib/adapters/http.js161678
3-9156169672968821161(method) AxiosHeaders.from(thing: any): AxiosH...lib/core/AxiosHeaders.js2482502322743179144353808(local function) onAdapterResolution(response:...lib/core/dispatchRequest.js5164
4-9156169672968821161(method) AxiosHeaders.from(thing: any): AxiosH...lib/core/AxiosHeaders.js2482503763705685345704826function transformData(fns: Array | {}, respon...lib/core/transformData.js1528
.................................
9249099947820526391919function toFormData(obj: any, formData: string...lib/helpers/toFormData.js862178914351007635312770(local function) dispatchXhrRequest(resolve: a...lib/adapters/xhr.js49259
9259099947820526391919function toFormData(obj: any, formData: string...lib/helpers/toFormData.js862179177673545987323723(method) Axios.getUri(config: any): stringlib/core/Axios.js161165
9269144720937035304957function generateReadableStream(length?: numbe...test/unit/adapters/http.js126144278810980780541004(local function)(): anytest/unit/adapters/http.js864889
9279144720937035304957function generateReadableStream(length?: numbe...test/unit/adapters/http.js1261449144720937035304957function generateReadableStream(length?: numbe...test/unit/adapters/http.js126144
9289169288528567851304(local function) lib$es6$promise$$internal$$in...test/manual/promise.js99-3637370147032562987class lib$es6$promise$promise$$Promise\\n(local...test/manual/promise.js99
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%db ./db/axios\n", + "// script\n", + "use coref::javascript::*\n", + "\n", + "fn default_db() -> JavascriptDB {\n", + " return JavascriptDB::load(\"coref_javascript_src.db\")\n", + "}\n", + "\n", + "fn getACallerFunction(function: FunctionLikeDeclaration, callerFunction: FunctionLikeDeclaration) -> bool {\n", + " for (mayInvokeExpression in MayInvokeExpression(default_db())) {\n", + " if (mayInvokeExpression in function.getACallSite() &&\n", + " callerFunction = mayInvokeExpression.getEnclosingFunction()) {\n", + " return true\n", + " }\n", + " }\n", + "}\n", + "\n", + "fn getAnEffectedFunction(function: FunctionLikeDeclaration, effectedFunction: FunctionLikeDeclaration) -> bool {\n", + " if (getACallerFunction(function, effectedFunction)) {\n", + " return true\n", + " }\n", + " for (callerFunction in FunctionLikeDeclaration(default_db())) {\n", + " if (getACallerFunction(function, callerFunction) &&\n", + " getAnEffectedFunction(callerFunction, effectedFunction)) {\n", + " return true\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Query the effected functions according to the changed lines.\n", + " *\n", + " * @param function the changed function id\n", + " * @param signature the changed function signature\n", + " * @param functionPath the changed function file path\n", + " * @param startLine the changed function start line\n", + " * @param endLine the changed function end line\n", + " * @param effectedFunction the effected function id\n", + " * @param effectedSignature the effected function signature\n", + " * @param effectedFunctionPath the effected function file path\n", + " * @param effectedStartLine the effected function start line\n", + " * @param effectedEndLine the effected function end line\n", + " */\n", + "fn out(\n", + " function: FunctionLikeDeclaration,\n", + " signature: string,\n", + " functionPath: string,\n", + " startLine: int,\n", + " endLine: int,\n", + " effectedFunction: FunctionLikeDeclaration,\n", + " effectedSignature: string,\n", + " effectedFunctionPath: string,\n", + " effectedStartLine: int,\n", + " effectedEndLine: int\n", + ") -> bool {\n", + " if (getAnEffectedFunction(function, effectedFunction)) {\n", + " let (symbol = function.getSymbol(),\n", + " effectedSymbol = effectedFunction.getSymbol(),\n", + " location = function.getLocation(),\n", + " effectedLocation = effectedFunction.getLocation()) {\n", + " if (signature = symbol.getDescription() &&\n", + " effectedSignature = effectedSymbol.getDescription() &&\n", + " functionPath = location.getRelativePath() &&\n", + " startLine = location.getStartLineNumber() &&\n", + " endLine = location.getEndLineNumber() &&\n", + " effectedFunctionPath = effectedLocation.getRelativePath() &&\n", + " effectedStartLine = effectedLocation.getStartLineNumber() &&\n", + " effectedEndLine = effectedLocation.getEndLineNumber()) {\n", + " return true\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "fn main() {\n", + " output(out())\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "保存上一次运行的 query 结果保存到一个JSON文件" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query result saved to /workspaces/CodeFuse-Query/tutorial/notebook/query.json\n" + ] + } + ], + "source": [ + "%%save_to ./query.json" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "STEP 3: 现在可以针对分析生成的结果,进行进一步的代码分析了,假设我们要分析`'lib/core/AxiosHeaders.js'`文件的变更有可能会影响到哪一些函数,我们可以这么进行分析:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Modification of file lib/core/AxiosHeaders.js for the following function might have impacts:\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `(local function) onAdapterRejection(reason: any): any` in lib/core/dispatchRequest.js at line 64\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `(local function) onloadend(): void` in lib/adapters/xhr.js at line 92\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `(local function) onAdapterResolution(response: any): any` in lib/core/dispatchRequest.js at line 51\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `function transformData(fns: Array | {}, response: any | null): any` in lib/core/transformData.js at line 15\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `function dispatchRequest(config: object): Promise` in lib/core/dispatchRequest.js at line 34\n", + " --> `(method) AxiosHeaders.from(thing: any): AxiosHeaders` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function)(request: any): void` in test/specs/defaults.spec.js at line 152\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `function createInstance(defaultConfig: any): Axios` in lib/axios.js at line 28\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(method) Axios.request(configOrUrl: string | any, config: any | null): Promise` in lib/core/Axios.js at line 38\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function)(url: any, config: any): Promise` in lib/core/Axios.js at line 171\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 396\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function) create(instanceConfig: any): Axios` in lib/axios.js at line 39\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 409\n", + " --> `(method) AxiosHeaders.concat(first: any, ...targets: {}): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 383\n", + " --> `(method) AxiosHeaders.clear(matcher: any): boolean` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 259\n", + " --> `(method) AxiosHeaders.clear(matcher: any): boolean` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 251\n", + " --> `(method) AxiosHeaders.toString(): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 422\n", + " --> `(local function) defineAccessor(_header: any): void` might impact `(method) AxiosHeaders.accessor(header: any): typeof AxiosHeaders` in lib/core/AxiosHeaders.js at line 260\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `function normalizeValue(value: any): any` might impact `function(value: any, header: any): void` in lib/core/AxiosHeaders.js at line 199\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `function normalizeValue(value: any): any` might impact `function(_value: any, _header: any): void` in lib/core/AxiosHeaders.js at line 97\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function normalizeValue(value: any): any` might impact `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 79\n", + " --> `function normalizeValue(value: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `function normalizeValue(value: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `function normalizeValue(value: any): any` might impact `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` in lib/core/AxiosHeaders.js at line 82\n", + " --> `function normalizeValue(value: any): any` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `function normalizeValue(value: any): any` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `function normalizeValue(value: any): any` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `function normalizeValue(value: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `function normalizeValue(value: any): any` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(request: any): void` in test/specs/defaults.spec.js at line 152\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 356\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 371\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `function(thing: any): any` in lib/core/mergeConfig.js at line 6\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(method) AxiosHeaders.toString(): any` in lib/core/AxiosHeaders.js at line 240\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(method) AxiosHeaders[Symbol.iterator](): any` in lib/core/AxiosHeaders.js at line 236\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 396\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 259\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 409\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 342\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 271\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 422\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 251\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `function(a: any, b: any): any` in lib/core/mergeConfig.js at line 96\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(method) AxiosHeaders.toJSON(asStrings: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 383\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 6\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function parseTokens(str: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `function parseTokens(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `function parseTokens(str: any): any` might impact `(method) AxiosHeaders.get(header: any, parser: any): any` in lib/core/AxiosHeaders.js at line 110\n", + " --> `function formatHeader(header: any): any` might impact `function(value: any, header: any): void` in lib/core/AxiosHeaders.js at line 199\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `(method) AxiosHeaders.has(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(method) AxiosHeaders.clear(matcher: any): boolean` in lib/core/AxiosHeaders.js at line 179\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 259\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(method) AxiosHeaders.has(header: any, matcher: any): boolean` in lib/core/AxiosHeaders.js at line 140\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function) deleteHeader(_header: any): void` in lib/core/AxiosHeaders.js at line 156\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` in lib/core/AxiosHeaders.js at line 152\n", + " --> `function matchHeaderValue(context: any, value: any, header: any, filter: any, isHeaderNameFilter: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 251\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 79\n", + " --> `function(headers: any, _rewrite: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `function(headers: any, _rewrite: any): any` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `function(headers: any, _rewrite: any): any` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `function(headers: any, _rewrite: any): any` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `function(headers: any, _rewrite: any): any` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `function(_value: any, _header: any): void` in lib/core/AxiosHeaders.js at line 97\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 79\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function(str: any): any` might impact `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 79\n", + " --> `function(str: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `function(str: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `function(str: any): any` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `function(str: any): any` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `function(str: any): any` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `function(str: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `function(str: any): any` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 356\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 371\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function) transform(fn: any): void` in lib/core/transformData.js at line 21\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `function transformData(fns: Array | {}, response: any | null): any` in lib/core/transformData.js at line 15\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 342\n", + " --> `(method) AxiosHeaders.normalize(format: any): AxiosHeaders` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `(local function) deleteHeader(_header: any): void` might impact `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` in lib/core/AxiosHeaders.js at line 152\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 127\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `function normalizeHeader(header: any): any` might impact `function(_value: any, _header: any): void` in lib/core/AxiosHeaders.js at line 97\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function) defineAccessor(_header: any): void` in lib/core/AxiosHeaders.js at line 268\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 117\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 136\n", + " --> `function normalizeHeader(header: any): any` might impact `(method) AxiosHeaders.has(header: any, matcher: any): boolean` in lib/core/AxiosHeaders.js at line 140\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 6\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `function normalizeHeader(header: any): any` might impact `(method) AxiosHeaders.set(header: any, valueOrRewrite: any, rewrite: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 79\n", + " --> `function normalizeHeader(header: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function) setHeader(_value: any, _header: any, _rewrite: any): void` in lib/core/AxiosHeaders.js at line 82\n", + " --> `function normalizeHeader(header: any): any` might impact `function(formHeaders: any): void` in lib/adapters/http.js at line 287\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function) deleteHeader(_header: any): void` in lib/core/AxiosHeaders.js at line 156\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `function normalizeHeader(header: any): any` might impact `function(target: any): AxiosHeaders` in lib/core/AxiosHeaders.js at line 255\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 149\n", + " --> `function normalizeHeader(header: any): any` might impact `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` in lib/core/AxiosHeaders.js at line 152\n", + " --> `function normalizeHeader(header: any): any` might impact `constructor AxiosHeaders.__constructor` in lib/core/AxiosHeaders.js at line 75\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n", + " --> `function normalizeHeader(header: any): any` might impact `(method) AxiosHeaders.get(header: any, parser: any): any` in lib/core/AxiosHeaders.js at line 110\n", + " --> `function normalizeHeader(header: any): any` might impact `(method) AxiosHeaders.accessor(header: any): typeof AxiosHeaders` in lib/core/AxiosHeaders.js at line 260\n", + " --> `function normalizeHeader(header: any): any` might impact `(local function) dispatchXhrRequest(resolve: any, reject: any): void` in lib/adapters/xhr.js at line 49\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 161\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 232\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 198\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function) dispatchHttpRequest(resolve: any, reject: any, onDone: any): unknown` in lib/adapters/http.js at line 161\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 214\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 183\n", + " --> `(method) AxiosHeaders.delete(header: any, matcher: any): boolean` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 173\n", + " --> `function buildAccessors(obj: any, header: any): void` might impact `(local function) defineAccessor(_header: any): void` in lib/core/AxiosHeaders.js at line 268\n", + " --> `function buildAccessors(obj: any, header: any): void` might impact `(method) AxiosHeaders.accessor(header: any): typeof AxiosHeaders` in lib/core/AxiosHeaders.js at line 260\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 101\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 38\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 47\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 65\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 26\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 6\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 320\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `function(): void` in test/unit/core/AxiosHeaders.js at line 79\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 18\n", + " --> `(method) AxiosHeaders.get(header: any, parser: any): any` might impact `(local function)(): void` in test/unit/core/AxiosHeaders.js at line 92\n" + ] + } + ], + "source": [ + "%%python\n", + "import json\n", + "\n", + "with open('./query.json', 'r') as fp:\n", + " query_data = json.loads(fp.read())\n", + "\n", + "analysis_path = 'lib/core/AxiosHeaders.js'\n", + "print(f'Modification of file {analysis_path} for the following function might have impacts:')\n", + "for data in query_data:\n", + " if data['functionPath'] == analysis_path:\n", + " signature = data['signature']\n", + " functionPath = data['functionPath']\n", + " effectedSignature = data['effectedSignature']\n", + " effectedFunctionPath = data['effectedFunctionPath']\n", + " effectedStartLine = data['effectedStartLine']\n", + " print(f' --> `{signature}` might impact `{effectedSignature}` in {effectedFunctionPath} at line {effectedStartLine}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Godel kernel", + "language": "rust", + "name": "godel-jupyter" + }, + "language_info": { + "file_extension": ".gdl", + "help_links": [ + { + "text": "Godel kernel Magics", + "url": "https://sparrow.alipay.com" + } + ], + "mimetype": "text/rust", + "name": "rust", + "version": "0.0.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From fbbf1924656728761f4b7b69b9003ef1742cdfc9 Mon Sep 17 00:00:00 2001 From: Zhou Ang Date: Fri, 1 Dec 2023 17:35:35 +0800 Subject: [PATCH 08/29] add java analysis tutorial --- tutorial/notebook/java_analysis.ipynb | 98 +++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 tutorial/notebook/java_analysis.ipynb diff --git a/tutorial/notebook/java_analysis.ipynb b/tutorial/notebook/java_analysis.ipynb new file mode 100644 index 00000000..68e6f659 --- /dev/null +++ b/tutorial/notebook/java_analysis.ipynb @@ -0,0 +1,98 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Java 分析示例\n", + "这是一个使用CodeFuse-Query分析java项目的教程。在教程中,你将体验到使用命令行工具对代码仓库进行数据化,然后使用Godel语言来分析这个仓库。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 0: 克隆要分析的仓库。我们以蚂蚁集团的 SOFABolt 项目为例。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!git clone https://github.com/sofastack/sofa-bolt.git" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,需要指定待分析的仓库地址,分析的语言,以及db文件的存储路径。该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!sparrow database create --source-root sofa-bolt --data-language-type java --output ./db/sofa-bolt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 2: 使用Godel分析语言分析db文件。在本教程中,可以点击代码左侧的执行按钮,直接运行分析脚本。在命令行中,你可以使用 `sparrow query run` 命令来执行查询脚本,具体可以使用`sparrow query run -h` 来获取详细参数信息。\n", + "在这个例子中,我们使用Godel语言查询了全仓库的类方法。你也可以在where子句中加入过滤条件,获取你想要的结果。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%db db/sofa-bolt\n", + "// script\n", + "use coref::java::{Callable, Class, Interface, JavaDB}\n", + "\n", + "fn db() -> JavaDB {\n", + " return JavaDB::load(\"coref_java_src.db\")\n", + "}\n", + "\n", + "query class_method from\n", + " m in Callable(db()),\n", + " c in Class(db())\n", + "where\n", + " c.id = m.getBelongedClass().id\n", + "select\n", + " c.getQualifiedName() as className,\n", + " m.getName() as methodName,\n", + " m.getSignature() as methodSignature" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Godel kernel", + "language": "rust", + "name": "godel-jupyter" + }, + "language_info": { + "file_extension": ".gdl", + "help_links": [ + { + "text": "Godel kernel Magics", + "url": "https://sparrow.alipay.com" + } + ], + "mimetype": "text/rust", + "name": "rust", + "version": "0.0.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From f346d596a21bea09f2a924a7508ead9059346c61 Mon Sep 17 00:00:00 2001 From: i-zhen Date: Mon, 4 Dec 2023 19:28:44 +0800 Subject: [PATCH 09/29] chore: update readme Signed-off-by: i-zhen --- README.md | 8 ++++---- doc/4_godelscript_language.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 48478c57..c3d9e435 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ CodeFuse-Query 包括**Sparrow CLI **和CodeFuse-Query**在线服务Query中心* 注:以上语言状态的成熟程度判断标准是根据COREF包含的信息种类和实际落地情况来进行判定,除了OC/C++外,所有语言均支持了完整的AST信息和Documentation信息,以Java为例,COREF for Java还支持了ASG、Call Graph、Class Hierarchy、以及部分CFG信息。 ## 使用场景 ### 查询代码特征 -小开发同学想知道 Repo A 里面使用了哪些 String 型的变量,所以他写了一个 Godel 如下,交给 CodeFuse-Query 系统给他返回了结果。 +小开发同学想知道 Repo A 里面使用了哪些 String 型的变量,所以他写了一个 Gödel 如下,交给 CodeFuse-Query 系统给他返回了结果。 ```rust // script use coref::java::* @@ -76,7 +76,7 @@ fn main() { 小 TL 同学发现团队总是写出很多类似的 Bug A,**他想针对 Bug A 制定一个代码规则和其检查器**,并在 CodeReview 阶段做个卡点。小 TL 通过在 CodeFuse-Query 平台上面编写了一段分析 Query,在平台上面测试符合要求,把这段分析 Query 固化下来作为一个代码规则,并上线到了 CodeReview/CI 阶段。从此这个 Bug 再也没发生过了。 类似需求:编写静态缺陷扫描规则进行代码风险拦截。 ### 获取统计数据 -小研究发现传统的代码复杂度指标很难准确地衡量代码的复杂情况,通过学习国际先进经验加上自我灵光一闪,设计了一套复杂度指标和算法。通过 Godel 实现出来以后,**发现不怎么优化就已经性能非常高了**,很快就应用到了 10 几种语言,11+万个仓库当中去了。马上就对代码仓库整体的复杂度有了深入的了解。相比较以前需要自己解析代码,分析语法树,对接系统,**不知道方便了多少。** +小研究发现传统的代码复杂度指标很难准确地衡量代码的复杂情况,通过学习国际先进经验加上自我灵光一闪,设计了一套复杂度指标和算法。通过 Gödel 实现出来以后,**发现不怎么优化就已经性能非常高了**,很快就应用到了 10 几种语言,11+万个仓库当中去了。马上就对代码仓库整体的复杂度有了深入的了解。相比较以前需要自己解析代码,分析语法树,对接系统,**不知道方便了多少。** 类似需求:代码统计,代码度量,算法设计,学术研究。 ## 应用领域 @@ -110,14 +110,14 @@ CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力: - [引言](./doc/1_abstract.md) - [概述](./doc/2_introduction.md) - [安装、配置、运行](./doc/3_install_and_run.md) -- [Godel查询语言介绍](./doc/4_godelscript_language.md) +- [Gödel查询语言介绍](./doc/4_godelscript_language.md) - [VSCode开发插件](./doc/5_toolchain.md) ## 目录结构说明 - `cli`:命令行工具的入口,提供统一的命令行接口,调用其他模块完成具体功能 - `language`:各语言的数据化核心(extractor)和数据建模(lib)。关于开放度的问题,请参见《关于开源范围的一些说明》章节 - `doc`:参考文档 -- `examples`:Godel 查询语言示例 +- `examples`:Gödel 查询语言示例 ## 关于开源范围的一些说明 截止目前,从源码**不能**构建出可执行的程序,原因在于本次开源并没有开放所有的模块,缺少的模块会在之后的一年陆续开源。尽管如此,为保障完整的体验,我们开放了**完整的安装包**下载,请见Release页面。 diff --git a/doc/4_godelscript_language.md b/doc/4_godelscript_language.md index 5f228b76..b2919ec3 100644 --- a/doc/4_godelscript_language.md +++ b/doc/4_godelscript_language.md @@ -15,7 +15,7 @@ fn main() { } ``` -GödelScript 是 CodeQuery 用于查询和数据处理的领域专用语言 (DSL)。GödelScript 使用了类 Rust 的语法,提供了严格的类型检查、方便快捷的类型推导、智能友好的错误提示信息,使用户能够快速上手。 +GödelScript 即 Gödel 查询语言。GödelScript 是 CodeQuery 用于查询和数据处理的领域专用语言 (DSL)。GödelScript 使用了类 Rust 的语法,提供了严格的类型检查、方便快捷的类型推导、智能友好的错误提示信息,使用户能够快速上手。 GödelScript 编译器主要应用场景为: From a34acd9ba4ee69ee7d231e9faba5af85f17198ab Mon Sep 17 00:00:00 2001 From: Zhou Ang Date: Mon, 4 Dec 2023 20:12:51 +0800 Subject: [PATCH 10/29] [feat] add star history in readme. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c3d9e435..c13eb641 100644 --- a/README.md +++ b/README.md @@ -134,3 +134,7 @@ CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力: | SQL | N | N | BETA | | Swift | N | N | BETA | | Properties | N | N | BETA | + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=codefuse-ai/CodeFuse-Query&type=Date)](https://star-history.com/#codefuse-ai/CodeFuse-Query&Date) From 5c6c6d5d846d948aa0718985a072173007a934ae Mon Sep 17 00:00:00 2001 From: Zhou Ang Date: Wed, 6 Dec 2023 12:10:20 +0800 Subject: [PATCH 11/29] [doc] add tutorial to root readme. --- README.md | 3 +++ tutorial/README.md | 47 ++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index c13eb641..6f5db353 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,9 @@ CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力: - [Gödel查询语言介绍](./doc/4_godelscript_language.md) - [VSCode开发插件](./doc/5_toolchain.md) +## 教程 (tutorial) +- [在线教程](./tutorial/README.md) + ## 目录结构说明 - `cli`:命令行工具的入口,提供统一的命令行接口,调用其他模块完成具体功能 - `language`:各语言的数据化核心(extractor)和数据建模(lib)。关于开放度的问题,请参见《关于开源范围的一些说明》章节 diff --git a/tutorial/README.md b/tutorial/README.md index 3d13653c..db4167fa 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -1,39 +1,46 @@ ## CodeFuse-Query使用教程 ### 使用Github Codespaces 来体验CodeFuse-Query分析能力 +我们编写了Jupyter Notebook形式的教程,你可以在 CodeFuse-Query 预置好的 Github Codespace 中打开,在阅读的同时执行代码,观察执行结果,也可以修改代码观察反馈,亲手体验 CodeFuse-Query 强大的自定义分析能力。 -### Jupyter kernel for CodeFuse-query 介绍 +#### 扩展阅读 +- [Github Codespaces](https://github.com/features/codespaces) +- [Jupyter Notebook](https://jupyter.org/) -Jupyter kernel for CodeFuse-query 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-query 相关的交互式功能。该内核允许用户在 Jupyter Notebook 中编写和执行 Godel 脚本,用于抽取、查询代码数据。此外,它还支持编写 Python 代码,以便对查询到的数据进行更深入的数据可视化和数据后处理操作。这里我们使用这个内核编写 Jupyter Notebook,用来进行 CodeFuse-Query 教程的学习和实践。 +#### 体验步骤 +1. 创建 Codespaces。依次点击项目首页的 Code -> Codespaces,在当前分支创建一个 Codespaces。 +2. 创建后,打开该 Codespaces,加载完成后,切换至项目 tutorial/notebook 目录下。 +3. 选择示例下的 Jupyter Notebook 分析教程,即ipynb文件。 +4. 在右上角的 "选择内核" 弹出框中,依次选择 "Jupyter Kernel..." -> "Godel Kernel"。 +5. 开始体验。 -#### 步骤 +### Jupyter kernel for CodeFuse-Query 介绍 +Jupyter kernel for CodeFuse-Query(以下称 Godel Kernel) 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-Query 相关的交互式功能。该内核提供以下能力: +- 支持在 Jupyter Notebook 中编写和执行 Godel 脚本。 +- 支持 `%%python` 命令编写并执行 Python 代码,以便对查询到的数据进行更深入的数据可视化和数据后处理操作。 +- 支持自定义COREF db路径。 +- 转储Jupyter cell的输出结果到特定文件。 -- 创建 Codespaces,依次点击 Code -> Codespaces,在当前分支创建一个 Codespaces -- 创建后,打开该 Codespaces,加载完成后,切换至项目 tutorial/notebook 目录下 -- 选择示例下的 Jupyter Notebook 分析教程,即可开始体验 +关于这些功能的详细介绍请看下一章节《Godel Kernel 用法介绍》。 -#### 注意 - -在打开 Jupyter 页面之后,如果是第一次加载容器,你还需要配置教程所使用的 `Jupyter kernel for CodeFuse-query`。在右上角的 "选择内核" 弹出框中,依次选择 "Jupyter Kernel..." -> "Godel Kernel"。 - -#### Kernel 用法 +#### Godel Kernel 用法介绍 ##### 设置要查询的 COREF database -使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行query查询,比如: +使用 `%db /path/to/db` 魔法命令来设置COREF db路径,内核会读取这个值来进行查询,比如: ```bash %db ./db ``` -> tips: 还可以用`!`来运行一些有用的bash命令,比如查看Sparrow CLI是否存在: +> tips: 还可以用`!`来运行一些有用的bash命令,比如查看 CodeFuse-Query CLI(sparrow)是否存在: ```rust !which sparrow ``` -##### Godel 查询 +##### 运行 Godel 查询 -设置好db路径后可以直接写Godel脚本,Jupyter kernel会创建临时文件来保存当前运行的Godel脚本并调用`sparrow query run`命令来进行查询,结果返回以HTML格式显示: +设置好db路径后可以直接写Godel脚本,Godel kernel会创建临时文件来保存当前运行的Godel脚本并调用`sparrow query run`命令来进行查询,结果返回以HTML格式显示: ```rust @@ -54,16 +61,6 @@ Jupyter kernel for CodeFuse-query 是 Jupyter 的一个特定内核,它为 Jup 可以通过 `%%save_to` cell魔法命令保存**上一次运行成功**的 query 结果到一个JSON文件,具体用法: ```bash -%%save_to PATH - save the query result to a JSON file. - -This cell magic will save the Sparrow query result to a file. - -Example: - %%save_to /path/to/file.json -``` - -比如: -```bash %%save_to ./query.json ``` From 062644326187647b82fd89517582455f869c37fe Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Wed, 6 Dec 2023 06:45:13 +0000 Subject: [PATCH 12/29] Update VS Code local tutorial launching note & fix Java tutorial code error --- README.md | 1 + tutorial/README.md | 18 +++++++++++++++--- tutorial/notebook/java_analysis.ipynb | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6f5db353..71326b4a 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力: - `language`:各语言的数据化核心(extractor)和数据建模(lib)。关于开放度的问题,请参见《关于开源范围的一些说明》章节 - `doc`:参考文档 - `examples`:Gödel 查询语言示例 +- `tutorial`:CodeFuse-Query 开发容器使用教程 ## 关于开源范围的一些说明 截止目前,从源码**不能**构建出可执行的程序,原因在于本次开源并没有开放所有的模块,缺少的模块会在之后的一年陆续开源。尽管如此,为保障完整的体验,我们开放了**完整的安装包**下载,请见Release页面。 diff --git a/tutorial/README.md b/tutorial/README.md index db4167fa..bfac7da8 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -1,11 +1,15 @@ ## CodeFuse-Query使用教程 -### 使用Github Codespaces 来体验CodeFuse-Query分析能力 -我们编写了Jupyter Notebook形式的教程,你可以在 CodeFuse-Query 预置好的 Github Codespace 中打开,在阅读的同时执行代码,观察执行结果,也可以修改代码观察反馈,亲手体验 CodeFuse-Query 强大的自定义分析能力。 +我们编写了Jupyter Notebook形式的教程,你可以使用项目配置的开发容器(devcontainer) 来体验 CodeFuse-Query,在阅读的同时执行代码,观察执行结果,也可以修改代码观察反馈,亲手体验 CodeFuse-Query 强大的自定义分析能力。 + +关于教程所运行的开发容器,你可以使用 GitHub Codespaces 功能进行远程加载体验,无需额外配置开发环境,通过浏览器访问,享受远程访问的便利性;也可以使用 VS Code在本地使用开发容器(dev container)功能体验 CodeFuse-Query 的使用教程(需要本地预装 VS Code和 Docker)。 #### 扩展阅读 - [Github Codespaces](https://github.com/features/codespaces) - [Jupyter Notebook](https://jupyter.org/) +- [VS Code devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) + +### 1. 使用 Github Codespaces 来体验CodeFuse-Query分析能力 #### 体验步骤 1. 创建 Codespaces。依次点击项目首页的 Code -> Codespaces,在当前分支创建一个 Codespaces。 @@ -14,7 +18,15 @@ 4. 在右上角的 "选择内核" 弹出框中,依次选择 "Jupyter Kernel..." -> "Godel Kernel"。 5. 开始体验。 -### Jupyter kernel for CodeFuse-Query 介绍 +### 2. 使用 VS Code 本地开发容器来体验CodeFuse-Query分析能力 + +#### 体验步骤 +1. 克隆代码到本地,然后使用VS Code 打开项目 +2. VS Code 会自动检测到 devcontainer 配置文件( .devcontainer/devcontainer.json)。它将会提示你是否要重新打开仓库以应用 devcontainer 配置。点击「重新打开」按钮即可。 +3. 加载完成后,切换至项目 tutorial/notebook 目录下 +4. 选择示例下的 Jupyter Notebook 分析教程,即可开始体验 + +## Jupyter kernel for CodeFuse-Query 介绍 Jupyter kernel for CodeFuse-Query(以下称 Godel Kernel) 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-Query 相关的交互式功能。该内核提供以下能力: - 支持在 Jupyter Notebook 中编写和执行 Godel 脚本。 - 支持 `%%python` 命令编写并执行 Python 代码,以便对查询到的数据进行更深入的数据可视化和数据后处理操作。 diff --git a/tutorial/notebook/java_analysis.ipynb b/tutorial/notebook/java_analysis.ipynb index 68e6f659..5fc538d3 100644 --- a/tutorial/notebook/java_analysis.ipynb +++ b/tutorial/notebook/java_analysis.ipynb @@ -66,7 +66,7 @@ " m in Callable(db()),\n", " c in Class(db())\n", "where\n", - " c.id = m.getBelongedClass().id\n", + " c.key_eq(m.getBelongedClass())\n", "select\n", " c.getQualifiedName() as className,\n", " m.getName() as methodName,\n", From c773bfebb8da57b837911d7c6216f0da93b89f35 Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Wed, 6 Dec 2023 07:21:59 +0000 Subject: [PATCH 13/29] Update devcontainer image [reomved --verbose version] --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0eb29b65..1bb51288 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "ghcr.io/lonrun/codefuse-query-tutorial:0.5", + "image": "ghcr.io/lonrun/codefuse-query-tutorial:0.6", "hostRequirements": { "cpus": 4 }, From 1b9aca715dc2d7853d64a8b9f94fb186d02ead9c Mon Sep 17 00:00:00 2001 From: Xunjin ZHENG Date: Wed, 6 Dec 2023 07:54:27 +0000 Subject: [PATCH 14/29] commit and improve tutorials outputs --- tutorial/notebook/go_analysis.ipynb | 221 +- tutorial/notebook/java_analysis.ipynb | 150 +- tutorial/notebook/javascript_analysis.ipynb | 2202 +------------------ tutorial/notebook/python_analysis.ipynb | 223 +- tutorial/notebook/xml_analysis.ipynb | 187 +- 5 files changed, 768 insertions(+), 2215 deletions(-) diff --git a/tutorial/notebook/go_analysis.ipynb b/tutorial/notebook/go_analysis.ipynb index aa03e4ee..85b8f259 100644 --- a/tutorial/notebook/go_analysis.ipynb +++ b/tutorial/notebook/go_analysis.ipynb @@ -18,11 +18,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/sparrow-cli/sparrow\n", + "\n" + ] + } + ], "source": [ "!which sparrow" ] @@ -38,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-11-22T08:30:58.387715Z", @@ -47,7 +56,7 @@ }, "outputs": [], "source": [ - "!git clone https://github.com/go-gorm/gorm.git" + "!git clone https://github.com/go-gorm/gorm.git -q" ] }, { @@ -59,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2023-11-23T03:46:32.220317Z", @@ -68,7 +77,7 @@ }, "outputs": [], "source": [ - "!sparrow database create --source-root gorm --data-language-type go --output ./db/gorm" + "!sparrow database create --source-root gorm --data-language-type go --output ./db/gorm --overwrite > /dev/null" ] }, { @@ -91,9 +100,169 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/workspaces/CodeFuse-Query/tutorial/notebook/db/gorm\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mSparrow database is set to: /workspaces/CodeFuse-Query/tutorial/notebook/db/gorm\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-12-06 07:42:29,249 INFO: sparrow 2.0.0\n", + " will start\n", + "2023-12-06 07:42:29,249 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/gorm/coref_go_src.db size: 42.32 MB\n", + "2023-12-06 07:42:29,250 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-t7lsy12n/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmphp2bm3pi.gdl\n", + "2023-12-06 07:42:29,314 INFO: godel-script compile time: 0.06s\n", + "2023-12-06 07:42:29,315 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmphp2bm3pi.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/gorm --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-t7lsy12n/query.json\n", + "2023-12-06 07:42:39,655 INFO: Task /tmp/godel-jupyter-t7lsy12n/query.gdl is success, result is NOT-EMPTY, execution time is 10.41s.\n", + "2023-12-06 07:42:39,656 INFO: run success\n", + "\n", + "Total results: 942\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namefunccmplxslel
0association.goDelete20197361
1association.goUnscoped14451
2association.goFind25358
3association.goAssociation42142
4association.goCount2367372
..................
937tests/preload_test.goTestPreloadEmptyData5215235
938tests/preload_test.goTestPreloadGoroutine2237253
939tests/preload_test.goTestPreloadWithDiffModel2255271
940tests/preload_test.goTestNestedPreloadWithUnscoped4273308
941tests/preload_test.goTestEmbedPreload2310445
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%db ./db/gorm\n", "// script\n", @@ -137,9 +306,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query result saved to /workspaces/CodeFuse-Query/tutorial/notebook/query.json\n" + ] + } + ], "source": [ "%%save_to ./query.json" ] @@ -155,7 +332,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2023-11-23T03:54:56.998681Z", @@ -163,7 +340,25 @@ }, "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " name func cmplx sl el\n", + "428 schema/field.go ParseField 110 99 436\n", + "18 callbacks/update.go ConvertToAssignments 69 131 304\n", + "309 schema/schema.go ParseWithSpecialTableName 68 121 370\n", + "130 callbacks/create.go ConvertToCreateValues 64 217 385\n", + "234 scan.go Scan 62 125 342\n", + "30 statement.go BuildCondition 61 284 465\n", + "429 schema/field.go setupValuerAndSetter 46 439 969\n", + "729 tests/migrate_test.go TestMigrateColumns 44 517 645\n", + "11 callbacks/query.go BuildQuerySQL 41 33 266\n", + "281 migrator/migrator.go MigrateColumn 41 441 542\n" + ] + } + ], "source": [ "%%python\n", "import pandas as pd\n", @@ -199,7 +394,7 @@ ], "mimetype": "text/rust", "name": "rust", - "version": "0.0.3" + "version": "0.0.4" } }, "nbformat": 4, diff --git a/tutorial/notebook/java_analysis.ipynb b/tutorial/notebook/java_analysis.ipynb index 5fc538d3..f45c205f 100644 --- a/tutorial/notebook/java_analysis.ipynb +++ b/tutorial/notebook/java_analysis.ipynb @@ -17,11 +17,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "!git clone https://github.com/sofastack/sofa-bolt.git" + "!git clone https://github.com/sofastack/sofa-bolt.git -q" ] }, { @@ -33,11 +33,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "!sparrow database create --source-root sofa-bolt --data-language-type java --output ./db/sofa-bolt" + "!sparrow database create --source-root sofa-bolt --data-language-type java --output ./db/sofa-bolt --overwrite > /dev/null" ] }, { @@ -50,9 +50,145 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-bolt\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mSparrow database is set to: /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-bolt\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-12-06 07:45:32,507 INFO: sparrow 2.0.0\n", + " will start\n", + "2023-12-06 07:45:32,507 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-bolt/coref_java_src.db size: 30.49 MB\n", + "2023-12-06 07:45:32,508 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-w6r7dgnm/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmpycrdkpyy.gdl\n", + "2023-12-06 07:45:32,673 INFO: godel-script compile time: 0.16s\n", + "2023-12-06 07:45:32,673 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmpycrdkpyy.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-bolt --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-w6r7dgnm/query.json\n", + "2023-12-06 07:45:40,305 INFO: Task /tmp/godel-jupyter-w6r7dgnm/query.gdl is success, result is NOT-EMPTY, execution time is 7.80s.\n", + "2023-12-06 07:45:40,305 INFO: run success\n", + "\n", + "Total results: 1730\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
classNamemethodNamemethodSignature
0com.alipay.remoting.ConnectionConnectioncom.alipay.remoting.Connection.Connection:null...
1com.alipay.remoting.ConnectionConnectioncom.alipay.remoting.Connection.Connection:null...
2com.alipay.remoting.ConnectionConnectioncom.alipay.remoting.Connection.Connection:null...
3com.alipay.remoting.ConnectionConnectioncom.alipay.remoting.Connection.Connection:null...
4com.alipay.remoting.ConnectionisFinecom.alipay.remoting.Connection.isFine:boolean()
............
1725com.alipay.remoting.util.NettyEventLoopUtilnewEventLoopGroupcom.alipay.remoting.util.NettyEventLoopUtil.ne...
1726com.alipay.remoting.util.NettyEventLoopUtilgetServerSocketChannelClasscom.alipay.remoting.util.NettyEventLoopUtil.ge...
1727com.alipay.remoting.util.NettyEventLoopUtilenableTriggeredModecom.alipay.remoting.util.NettyEventLoopUtil.en...
1728com.alipay.remoting.util.NettyEventLoopUtilgetClientSocketChannelClasscom.alipay.remoting.util.NettyEventLoopUtil.ge...
1729com.alipay.remoting.codec.ProtocolCodeBasedDec...testDecodeIllegalPacketcom.alipay.remoting.codec.ProtocolCodeBasedDec...
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%db db/sofa-bolt\n", "// script\n", @@ -90,7 +226,7 @@ ], "mimetype": "text/rust", "name": "rust", - "version": "0.0.3" + "version": "0.0.4" } }, "nbformat": 4, diff --git a/tutorial/notebook/javascript_analysis.ipynb b/tutorial/notebook/javascript_analysis.ipynb index 7c8c3068..c7648f2f 100644 --- a/tutorial/notebook/javascript_analysis.ipynb +++ b/tutorial/notebook/javascript_analysis.ipynb @@ -54,1827 +54,30 @@ "start_time": "2023-11-22T08:30:44.572634Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'axios'...\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "remote: Enumerating objects: 9324, done. \n", - "\n", - "\n", - "remote: Counting objects: 0% (1/2814) \n", - "\n", - "remote: Counting objects: 1% (29/2814) \n", - "\n", - "remote: Counting objects: 2% (57/2814) \n", - "\n", - "remote: Counting objects: 3% (85/2814) \n", - "\n", - "remote: Counting objects: 4% (113/2814) \n", - "\n", - "remote: Counting objects: 5% (141/2814) \n", - "\n", - "remote: Counting objects: 6% (169/2814) \n", - "\n", - "remote: Counting objects: 7% (197/2814) \n", - "\n", - "remote: Counting objects: 8% (226/2814) \n", - "\n", - "remote: Counting objects: 9% (254/2814) \n", - "\n", - "remote: Counting objects: 10% (282/2814) \n", - "\n", - "remote: Counting objects: 11% (310/2814) \n", - "\n", - "remote: Counting objects: 12% (338/2814) \n", - "\n", - "remote: Counting objects: 13% (366/2814) \n", - "\n", - "remote: Counting objects: 14% (394/2814) \n", - "\n", - "remote: Counting objects: 15% (423/2814) \n", - "\n", - "remote: Counting objects: 16% (451/2814) \n", - "\n", - "remote: Counting objects: 17% (479/2814) \n", - "\n", - "remote: Counting objects: 18% (507/2814) \n", - "\n", - "remote: Counting objects: 19% (535/2814) \n", - "\n", - "remote: Counting objects: 20% (563/2814) \n", - "\n", - "remote: Counting objects: 21% (591/2814) \n", - "\n", - "remote: Counting objects: 22% (620/2814) \n", - "\n", - "remote: Counting objects: 23% (648/2814) \n", - "\n", - "remote: Counting objects: 24% (676/2814) \n", - "\n", - "remote: Counting objects: 25% (704/2814) \n", - "\n", - "remote: Counting objects: 26% (732/2814) \n", - "\n", - "remote: Counting objects: 27% (760/2814) \n", - "\n", - "remote: Counting objects: 28% (788/2814) \n", - "\n", - "remote: Counting objects: 29% (817/2814) \n", - "\n", - "remote: Counting objects: 30% (845/2814) \n", - "\n", - "remote: Counting objects: 31% (873/2814) \n", - "\n", - "remote: Counting objects: 32% (901/2814) \n", - "\n", - "remote: Counting objects: 33% (929/2814) \n", - "\n", - "remote: Counting objects: 34% (957/2814) \n", - "\n", - "remote: Counting objects: 35% (985/2814) \n", - "\n", - "remote: Counting objects: 36% (1014/2814) \n", - "\n", - "remote: Counting objects: 37% (1042/2814) \n", - "\n", - "remote: Counting objects: 38% (1070/2814) \n", - "\n", - "remote: Counting objects: 39% (1098/2814) \n", - "\n", - "remote: Counting objects: 40% (1126/2814) \n", - "\n", - "remote: Counting objects: 41% (1154/2814) \n", - "\n", - "remote: Counting objects: 42% (1182/2814) \n", - "\n", - "remote: Counting objects: 43% (1211/2814) \n", - "\n", - "remote: Counting objects: 44% (1239/2814) \n", - "\n", - "remote: Counting objects: 45% (1267/2814) \n", - "\n", - "remote: Counting objects: 46% (1295/2814) \n", - "\n", - "remote: Counting objects: 47% (1323/2814) \n", - "\n", - "remote: Counting objects: 48% (1351/2814) \n", - "\n", - "remote: Counting objects: 49% (1379/2814) \n", - "\n", - "remote: Counting objects: 50% (1407/2814) \n", - "\n", - "remote: Counting objects: 51% (1436/2814) \n", - "\n", - "remote: Counting objects: 52% (1464/2814) \n", - "\n", - "remote: Counting objects: 53% (1492/2814) \n", - "\n", - "remote: Counting objects: 54% (1520/2814) \n", - "\n", - "remote: Counting objects: 55% (1548/2814) \n", - "\n", - "remote: Counting objects: 56% (1576/2814) \n", - "\n", - "remote: Counting objects: 57% (1604/2814) \n", - "\n", - "remote: Counting objects: 58% (1633/2814) \n", - "\n", - "remote: Counting objects: 59% (1661/2814) \n", - "\n", - "remote: Counting objects: 60% (1689/2814) \n", - "\n", - "remote: Counting objects: 61% (1717/2814) \n", - "\n", - "remote: Counting objects: 62% (1745/2814) \n", - "\n", - "remote: Counting objects: 63% (1773/2814) \n", - "\n", - "remote: Counting objects: 64% (1801/2814) \n", - "\n", - "remote: Counting objects: 65% (1830/2814) \n", - "\n", - "remote: Counting objects: 66% (1858/2814) \n", - "\n", - "remote: Counting objects: 67% (1886/2814) \n", - "\n", - "remote: Counting objects: 68% (1914/2814) \n", - "\n", - "remote: Counting objects: 69% (1942/2814) \n", - "\n", - "remote: Counting objects: 70% (1970/2814) \n", - "\n", - "remote: Counting objects: 71% (1998/2814) \n", - "\n", - "remote: Counting objects: 72% (2027/2814) \n", - "\n", - "remote: Counting objects: 73% (2055/2814) \n", - "\n", - "remote: Counting objects: 74% (2083/2814) \n", - "\n", - "remote: Counting objects: 75% (2111/2814) \n", - "\n", - "remote: Counting objects: 76% (2139/2814) \n", - "\n", - "remote: Counting objects: 77% (2167/2814) \n", - "\n", - "remote: Counting objects: 78% (2195/2814) \n", - "\n", - "remote: Counting objects: 79% (2224/2814) \n", - "\n", - "remote: Counting objects: 80% (2252/2814) \n", - "\n", - "remote: Counting objects: 81% (2280/2814) \n", - "\n", - "remote: Counting objects: 82% (2308/2814) \n", - "\n", - "remote: Counting objects: 83% (2336/2814) \n", - "\n", - "remote: Counting objects: 84% (2364/2814) \n", - "\n", - "remote: Counting objects: 85% (2392/2814) \n", - "\n", - "remote: Counting objects: 86% (2421/2814) \n", - "\n", - "remote: Counting objects: 87% (2449/2814) \n", - "\n", - "remote: Counting objects: 88% (2477/2814) \n", - "\n", - "remote: Counting objects: 89% (2505/2814) \n", - "\n", - "remote: Counting objects: 90% (2533/2814) \n", - "\n", - "remote: Counting objects: 91% (2561/2814) \n", - "\n", - "remote: Counting objects: 92% (2589/2814) \n", - "\n", - "remote: Counting objects: 93% (2618/2814) \n", - "\n", - "remote: Counting objects: 94% (2646/2814) \n", - "\n", - "remote: Counting objects: 95% (2674/2814) \n", - "\n", - "remote: Counting objects: 96% (2702/2814) \n", - "\n", - "remote: Counting objects: 97% (2730/2814) \n", - "\n", - "remote: Counting objects: 98% (2758/2814) \n", - "\n", - "remote: Counting objects: 99% (2786/2814) \n", - "\n", - "remote: Counting objects: 100% (2814/2814) \n", - "\n", - "remote: Counting objects: 100% (2814/2814), done. \n", - "\n", - "\n", - "remote: Compressing objects: 0% (1/448) \n", - "\n", - "remote: Compressing objects: 1% (5/448) \n", - "\n", - "remote: Compressing objects: 2% (9/448) \n", - "\n", - "remote: Compressing objects: 3% (14/448) \n", - "\n", - "remote: Compressing objects: 4% (18/448) \n", - "\n", - "remote: Compressing objects: 5% (23/448) \n", - "\n", - "remote: Compressing objects: 6% (27/448) \n", - "\n", - "remote: Compressing objects: 7% (32/448) \n", - "\n", - "remote: Compressing objects: 8% (36/448) \n", - "\n", - "remote: Compressing objects: 9% (41/448) \n", - "\n", - "remote: Compressing objects: 10% (45/448) \n", - "\n", - "remote: Compressing objects: 11% (50/448) \n", - "\n", - "remote: Compressing objects: 12% (54/448) \n", - "\n", - "remote: Compressing objects: 13% (59/448) \n", - "\n", - "remote: Compressing objects: 14% (63/448) \n", - "\n", - "remote: Compressing objects: 15% (68/448) \n", - "\n", - "remote: Compressing objects: 16% (72/448) \n", - "\n", - "remote: Compressing objects: 17% (77/448) \n", - "\n", - "remote: Compressing objects: 18% (81/448) \n", - "\n", - "remote: Compressing objects: 19% (86/448) \n", - "\n", - "remote: Compressing objects: 20% (90/448) \n", - "\n", - "remote: Compressing objects: 21% (95/448) \n", - "\n", - "remote: Compressing objects: 22% (99/448) \n", - "\n", - "remote: Compressing objects: 23% (104/448) \n", - "\n", - "remote: Compressing objects: 24% (108/448) \n", - "\n", - "remote: Compressing objects: 25% (112/448) \n", - "\n", - "remote: Compressing objects: 26% (117/448) \n", - "\n", - "remote: Compressing objects: 27% (121/448) \n", - "\n", - "remote: Compressing objects: 28% (126/448) \n", - "\n", - "remote: Compressing objects: 29% (130/448) \n", - "\n", - "remote: Compressing objects: 30% (135/448) \n", - "\n", - "remote: Compressing objects: 31% (139/448) \n", - "\n", - "remote: Compressing objects: 32% (144/448) \n", - "\n", - "remote: Compressing objects: 33% (148/448) \n", - "\n", - "remote: Compressing objects: 34% (153/448) \n", - "\n", - "remote: Compressing objects: 35% (157/448) \n", - "\n", - "remote: Compressing objects: 36% (162/448) \n", - "\n", - "remote: Compressing objects: 37% (166/448) \n", - "\n", - "remote: Compressing objects: 38% (171/448) \n", - "\n", - "remote: Compressing objects: 39% (175/448) \n", - "\n", - "remote: Compressing objects: 40% (180/448) \n", - "\n", - "remote: Compressing objects: 41% (184/448) \n", - "\n", - "remote: Compressing objects: 42% (189/448) \n", - "\n", - "remote: Compressing objects: 43% (193/448) \n", - "\n", - "remote: Compressing objects: 44% (198/448) \n", - "\n", - "remote: Compressing objects: 45% (202/448) \n", - "\n", - "remote: Compressing objects: 46% (207/448) \n", - "\n", - "remote: Compressing objects: 47% (211/448) \n", - "\n", - "remote: Compressing objects: 48% (216/448) \n", - "\n", - "remote: Compressing objects: 49% (220/448) \n", - "\n", - "remote: Compressing objects: 50% (224/448) \n", - "\n", - "remote: Compressing objects: 51% (229/448) \n", - "\n", - "remote: Compressing objects: 52% (233/448) \n", - "\n", - "remote: Compressing objects: 53% (238/448) \n", - "\n", - "remote: Compressing objects: 54% (242/448) \n", - "\n", - "remote: Compressing objects: 55% (247/448) \n", - "\n", - "remote: Compressing objects: 56% (251/448) \n", - "\n", - "remote: Compressing objects: 57% (256/448) \n", - "\n", - "remote: Compressing objects: 58% (260/448) \n", - "\n", - "remote: Compressing objects: 59% (265/448) \n", - "\n", - "remote: Compressing objects: 60% (269/448) \n", - "\n", - "remote: Compressing objects: 61% (274/448) \n", - "\n", - "remote: Compressing objects: 62% (278/448) \n", - "\n", - "remote: Compressing objects: 63% (283/448) \n", - "\n", - "remote: Compressing objects: 64% (287/448) \n", - "\n", - "remote: Compressing objects: 65% (292/448) \n", - "\n", - "remote: Compressing objects: 66% (296/448) \n", - "\n", - "remote: Compressing objects: 67% (301/448) \n", - "\n", - "remote: Compressing objects: 68% (305/448) \n", - "\n", - "remote: Compressing objects: 69% (310/448) \n", - "\n", - "remote: Compressing objects: 70% (314/448) \n", - "\n", - "remote: Compressing objects: 71% (319/448) \n", - "\n", - "remote: Compressing objects: 72% (323/448) \n", - "\n", - "remote: Compressing objects: 73% (328/448) \n", - "\n", - "remote: Compressing objects: 74% (332/448) \n", - "\n", - "remote: Compressing objects: 75% (336/448) \n", - "\n", - "remote: Compressing objects: 76% (341/448) \n", - "\n", - "remote: Compressing objects: 77% (345/448) \n", - "\n", - "remote: Compressing objects: 78% (350/448) \n", - "\n", - "remote: Compressing objects: 79% (354/448) \n", - "\n", - "remote: Compressing objects: 80% (359/448) \n", - "\n", - "remote: Compressing objects: 81% (363/448) \n", - "\n", - "remote: Compressing objects: 82% (368/448) \n", - "\n", - "remote: Compressing objects: 83% (372/448) \n", - "\n", - "remote: Compressing objects: 84% (377/448) \n", - "\n", - "remote: Compressing objects: 85% (381/448) \n", - "\n", - "remote: Compressing objects: 86% (386/448) \n", - "\n", - "remote: Compressing objects: 87% (390/448) \n", - "\n", - "remote: Compressing objects: 88% (395/448) \n", - "\n", - "remote: Compressing objects: 89% (399/448) \n", - "\n", - "remote: Compressing objects: 90% (404/448) \n", - "\n", - "remote: Compressing objects: 91% (408/448) \n", - "\n", - "remote: Compressing objects: 92% (413/448) \n", - "\n", - "remote: Compressing objects: 93% (417/448) \n", - "\n", - "remote: Compressing objects: 94% (422/448) \n", - "\n", - "remote: Compressing objects: 95% (426/448) \n", - "\n", - "remote: Compressing objects: 96% (431/448) \n", - "\n", - "remote: Compressing objects: 97% (435/448) \n", - "\n", - "remote: Compressing objects: 98% (440/448) \n", - "\n", - "remote: Compressing objects: 99% (444/448) \n", - "\n", - "remote: Compressing objects: 100% (448/448) \n", - "\n", - "remote: Compressing objects: 100% (448/448), done. \n", - "\n", - "\n", - "Receiving objects: 0% (1/9324)\n", - "\n", - "Receiving objects: 1% (94/9324)\n", - "\n", - "Receiving objects: 2% (187/9324)\n", - "\n", - "Receiving objects: 3% (280/9324)\n", - "\n", - "Receiving objects: 4% (373/9324)\n", - "\n", - "Receiving objects: 5% (467/9324)\n", - "\n", - "Receiving objects: 6% (560/9324)\n", - "\n", - "Receiving objects: 7% (653/9324)\n", - "\n", - "Receiving objects: 8% (746/9324)\n", - "\n", - "Receiving objects: 9% (840/9324)\n", - "\n", - "Receiving objects: 10% (933/9324)\n", - "\n", - "Receiving objects: 11% (1026/9324)\n", - "\n", - "Receiving objects: 12% (1119/9324)\n", - "\n", - "Receiving objects: 13% (1213/9324)\n", - "\n", - "Receiving objects: 14% (1306/9324)\n", - "\n", - "Receiving objects: 15% (1399/9324)\n", - "\n", - "Receiving objects: 16% (1492/9324)\n", - "\n", - "Receiving objects: 17% (1586/9324)\n", - "\n", - "Receiving objects: 18% (1679/9324)\n", - "\n", - "Receiving objects: 19% (1772/9324)\n", - "\n", - "Receiving objects: 20% (1865/9324)\n", - "\n", - "Receiving objects: 21% (1959/9324)\n", - "\n", - "Receiving objects: 22% (2052/9324)\n", - "\n", - "Receiving objects: 23% (2145/9324)\n", - "\n", - "Receiving objects: 24% (2238/9324)\n", - "\n", - "Receiving objects: 25% (2331/9324)\n", - "\n", - "Receiving objects: 26% (2425/9324)\n", - "\n", - "Receiving objects: 27% (2518/9324)\n", - "\n", - "Receiving objects: 28% (2611/9324)\n", - "\n", - "Receiving objects: 29% (2704/9324)\n", - "\n", - "Receiving objects: 30% (2798/9324)\n", - "\n", - "Receiving objects: 31% (2891/9324)\n", - "\n", - "Receiving objects: 32% (2984/9324)\n", - "\n", - "Receiving objects: 33% (3077/9324)\n", - "\n", - "Receiving objects: 34% (3171/9324)\n", - "\n", - "Receiving objects: 35% (3264/9324)\n", - "\n", - "Receiving objects: 36% (3357/9324)\n", - "\n", - "Receiving objects: 37% (3450/9324)\n", - "\n", - "Receiving objects: 38% (3544/9324)\n", - "\n", - "Receiving objects: 39% (3637/9324)\n", - "\n", - "Receiving objects: 40% (3730/9324)\n", - "\n", - "Receiving objects: 41% (3823/9324)\n", - "\n", - "Receiving objects: 42% (3917/9324)\n", - "\n", - "Receiving objects: 43% (4010/9324)\n", - "\n", - "Receiving objects: 44% (4103/9324)\n", - "\n", - "Receiving objects: 45% (4196/9324)\n", - "\n", - "Receiving objects: 46% (4290/9324)\n", - "\n", - "Receiving objects: 47% (4383/9324)\n", - "\n", - "Receiving objects: 48% (4476/9324)\n", - "\n", - "Receiving objects: 49% (4569/9324)\n", - "\n", - "Receiving objects: 50% (4662/9324)\n", - "\n", - "Receiving objects: 51% (4756/9324)\n", - "\n", - "Receiving objects: 52% (4849/9324)\n", - "\n", - "Receiving objects: 53% (4942/9324)\n", - "\n", - "Receiving objects: 54% (5035/9324)\n", - "\n", - "Receiving objects: 55% (5129/9324)\n", - "\n", - "Receiving objects: 56% (5222/9324)\n", - "\n", - "Receiving objects: 57% (5315/9324)\n", - "\n", - "Receiving objects: 58% (5408/9324)\n", - "\n", - "Receiving objects: 59% (5502/9324)\n", - "\n", - "Receiving objects: 60% (5595/9324)\n", - "\n", - "Receiving objects: 61% (5688/9324)\n", - "\n", - "Receiving objects: 62% (5781/9324)\n", - "\n", - "Receiving objects: 63% (5875/9324)\n", - "\n", - "Receiving objects: 64% (5968/9324)\n", - "\n", - "Receiving objects: 65% (6061/9324)\n", - "\n", - "Receiving objects: 66% (6154/9324)\n", - "\n", - "Receiving objects: 67% (6248/9324)\n", - "\n", - "Receiving objects: 68% (6341/9324)\n", - "\n", - "Receiving objects: 69% (6434/9324)\n", - "\n", - "Receiving objects: 70% (6527/9324)\n", - "\n", - "Receiving objects: 71% (6621/9324)\n", - "\n", - "Receiving objects: 72% (6714/9324)\n", - "\n", - "Receiving objects: 73% (6807/9324)\n", - "\n", - "Receiving objects: 74% (6900/9324)\n", - "\n", - "Receiving objects: 75% (6993/9324)\n", - "\n", - "Receiving objects: 76% (7087/9324)\n", - "\n", - "Receiving objects: 77% (7180/9324)\n", - "\n", - "Receiving objects: 78% (7273/9324)\n", - "\n", - "Receiving objects: 79% (7366/9324)\n", - "\n", - "Receiving objects: 80% (7460/9324)\n", - "\n", - "Receiving objects: 81% (7553/9324)\n", - "\n", - "Receiving objects: 82% (7646/9324)\n", - "\n", - "Receiving objects: 83% (7739/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 84% (7833/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 85% (7926/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 86% (8019/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 87% (8112/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 88% (8206/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 89% (8299/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 90% (8392/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 91% (8485/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 92% (8579/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 93% (8672/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 94% (8765/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 95% (8858/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 96% (8952/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 97% (9045/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 98% (9138/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 99% (9231/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "remote: Total 9324 (delta 2509), reused 2486 (delta 2357), pack-reused 6510 \n", - "\n", - "\n", - "Receiving objects: 100% (9324/9324), 4.81 MiB | 9.60 MiB/s\n", - "\n", - "Receiving objects: 100% (9324/9324), 10.07 MiB | 12.66 MiB/s, done.\n", - "\n", - "\n", - "Resolving deltas: 0% (0/5971)\n", - "\n", - "Resolving deltas: 1% (60/5971)\n", - "\n", - "Resolving deltas: 2% (121/5971)\n", - "\n", - "Resolving deltas: 3% (180/5971)\n", - "\n", - "Resolving deltas: 4% (239/5971)\n", - "\n", - "Resolving deltas: 5% (299/5971)\n", - "\n", - "Resolving deltas: 6% (359/5971)\n", - "\n", - "Resolving deltas: 7% (418/5971)\n", - "\n", - "Resolving deltas: 8% (478/5971)\n", - "\n", - "Resolving deltas: 9% (538/5971)\n", - "\n", - "Resolving deltas: 10% (598/5971)\n", - "\n", - "Resolving deltas: 11% (657/5971)\n", - "\n", - "Resolving deltas: 12% (717/5971)\n", - "\n", - "Resolving deltas: 13% (778/5971)\n", - "\n", - "Resolving deltas: 14% (837/5971)\n", - "\n", - "Resolving deltas: 15% (896/5971)\n", - "\n", - "Resolving deltas: 16% (956/5971)\n", - "\n", - "Resolving deltas: 17% (1016/5971)\n", - "\n", - "Resolving deltas: 18% (1075/5971)\n", - "\n", - "Resolving deltas: 19% (1135/5971)\n", - "\n", - "Resolving deltas: 20% (1195/5971)\n", - "\n", - "Resolving deltas: 21% (1254/5971)\n", - "\n", - "Resolving deltas: 22% (1314/5971)\n", - "\n", - "Resolving deltas: 23% (1374/5971)\n", - "\n", - "Resolving deltas: 24% (1434/5971)\n", - "\n", - "Resolving deltas: 25% (1493/5971)\n", - "\n", - "Resolving deltas: 26% (1553/5971)\n", - "\n", - "Resolving deltas: 27% (1613/5971)\n", - "\n", - "Resolving deltas: 28% (1672/5971)\n", - "\n", - "Resolving deltas: 29% (1732/5971)\n", - "\n", - "Resolving deltas: 30% (1792/5971)\n", - "\n", - "Resolving deltas: 31% (1852/5971)\n", - "\n", - "Resolving deltas: 32% (1911/5971)\n", - "\n", - "Resolving deltas: 33% (1971/5971)\n", - "\n", - "Resolving deltas: 34% (2031/5971)\n", - "\n", - "Resolving deltas: 35% (2090/5971)\n", - "\n", - "Resolving deltas: 36% (2150/5971)\n", - "\n", - "Resolving deltas: 37% (2210/5971)\n", - "\n", - "Resolving deltas: 38% (2269/5971)\n", - "\n", - "Resolving deltas: 39% (2329/5971)\n", - "\n", - "Resolving deltas: 40% (2389/5971)\n", - "\n", - "Resolving deltas: 41% (2449/5971)\n", - "\n", - "Resolving deltas: 42% (2508/5971)\n", - "\n", - "Resolving deltas: 43% (2568/5971)\n", - "\n", - "Resolving deltas: 44% (2628/5971)\n", - "\n", - "Resolving deltas: 45% (2687/5971)\n", - "\n", - "Resolving deltas: 46% (2747/5971)\n", - "\n", - "Resolving deltas: 47% (2807/5971)\n", - "\n", - "Resolving deltas: 48% (2867/5971)\n", - "\n", - "Resolving deltas: 49% (2926/5971)\n", - "\n", - "Resolving deltas: 50% (2986/5971)\n", - "\n", - "Resolving deltas: 51% (3046/5971)\n", - "\n", - "Resolving deltas: 52% (3105/5971)\n", - "\n", - "Resolving deltas: 53% (3165/5971)\n", - "\n", - "Resolving deltas: 54% (3225/5971)\n", - "\n", - "Resolving deltas: 55% (3285/5971)\n", - "\n", - "Resolving deltas: 56% (3344/5971)\n", - "\n", - "Resolving deltas: 57% (3404/5971)\n", - "\n", - "Resolving deltas: 58% (3464/5971)\n", - "\n", - "Resolving deltas: 59% (3523/5971)\n", - "\n", - "Resolving deltas: 60% (3583/5971)\n", - "\n", - "Resolving deltas: 61% (3643/5971)\n", - "\n", - "Resolving deltas: 62% (3703/5971)\n", - "\n", - "Resolving deltas: 63% (3762/5971)\n", - "\n", - "Resolving deltas: 64% (3822/5971)\n", - "\n", - "Resolving deltas: 65% (3882/5971)\n", - "\n", - "Resolving deltas: 66% (3941/5971)\n", - "\n", - "Resolving deltas: 67% (4001/5971)\n", - "\n", - "Resolving deltas: 68% (4061/5971)\n", - "\n", - "Resolving deltas: 69% (4120/5971)\n", - "\n", - "Resolving deltas: 70% (4180/5971)\n", - "\n", - "Resolving deltas: 71% (4240/5971)\n", - "\n", - "Resolving deltas: 72% (4300/5971)\n", - "\n", - "Resolving deltas: 73% (4359/5971)\n", - "\n", - "Resolving deltas: 74% (4419/5971)\n", - "\n", - "Resolving deltas: 75% (4479/5971)\n", - "\n", - "Resolving deltas: 76% (4538/5971)\n", - "\n", - "Resolving deltas: 77% (4598/5971)\n", - "\n", - "Resolving deltas: 78% (4658/5971)\n", - "\n", - "Resolving deltas: 79% (4718/5971)\n", - "\n", - "Resolving deltas: 80% (4777/5971)\n", - "\n", - "Resolving deltas: 81% (4837/5971)\n", - "\n", - "Resolving deltas: 82% (4897/5971)\n", - "\n", - "Resolving deltas: 83% (4956/5971)\n", - "\n", - "Resolving deltas: 84% (5016/5971)\n", - "\n", - "Resolving deltas: 85% (5076/5971)\n", - "\n", - "Resolving deltas: 86% (5136/5971)\n", - "\n", - "Resolving deltas: 87% (5195/5971)\n", - "\n", - "Resolving deltas: 88% (5255/5971)\n", - "\n", - "Resolving deltas: 89% (5315/5971)\n", - "\n", - "Resolving deltas: 90% (5374/5971)\n", - "\n", - "Resolving deltas: 91% (5434/5971)\n", - "\n", - "Resolving deltas: 92% (5494/5971)\n", - "\n", - "Resolving deltas: 93% (5554/5971)\n", - "\n", - "Resolving deltas: 94% (5613/5971)\n", - "\n", - "Resolving deltas: 95% (5673/5971)\n", - "\n", - "Resolving deltas: 96% (5733/5971)\n", - "\n", - "Resolving deltas: 97% (5792/5971)\n", - "\n", - "Resolving deltas: 98% (5852/5971)\n", - "\n", - "Resolving deltas: 99% (5912/5971)\n", - "\n", - "Resolving deltas: 100% (5971/5971)\n", - "\n", - "Resolving deltas: 100% (5971/5971), done.\n", - "\n", - "\n" - ] - } - ], - "source": [ - "!git clone https://github.com/axios/axios.git" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的axios子目录),分析的语言(javscript),以及db文件的存储路径(放置在当前目录下的/db/axios)。执行该命令之后,会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行的。" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2023-11-23T03:46:32.220317Z", - "start_time": "2023-11-23T03:46:12.785705Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-30 08:05:39,428 INFO: sparrow 2.0.0\n", - "\n", - "\n", - " will start\n", - "\n", - "\n", - "2023-11-30 08:05:39,428 INFO: current memory is : 15.61 GB\n", - "\n", - "\n", - "2023-11-30 08:05:39,428 INFO: final -Xmx is : 14.61 GB\n", - "\n", - "\n", - "2023-11-30 08:05:39,428 INFO: /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db will be create\n", - "\n", - "\n", - "2023-11-30 08:05:39,428 INFO: execute : /sparrow-cli/language/javascript/extractor/coref-javascript-src-extractor extract --src /workspaces/CodeFuse-Query/tutorial/notebook/axios --db /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db\n", - "\n", - "\n", - "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/.git\n", - "\n", - "\n", - "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/dist\n", - "\n", - "\n", - "Ignore /workspaces/CodeFuse-Query/tutorial/notebook/axios/package-lock.json\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/.eslintrc.cjs...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/.eslintrc.cjs\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/gulpfile.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/gulpfile.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.cts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.cts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.d.ts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/karma.conf.cjs...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/karma.conf.cjs\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/rollup.config.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/rollup.config.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/webpack.config.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/webpack.config.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/GithubAPI.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/GithubAPI.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/RepoBot.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/RepoBot.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/api.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/api.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/check-build-version.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/check-build-version.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/contributors.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/contributors.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/githubAxios.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/githubAxios.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/injectContributorsList.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/injectContributorsList.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/pr.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/pr.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/ssl_hotfix.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/ssl_hotfix.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/axios.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/axios.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/utils.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/utils.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/client.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/client.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/sandbox/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/actions/notify_published.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/actions/notify_published.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/colorize.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/colorize.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/parser.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/bin/helpers/parser.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/get/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/get/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/post/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/post/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/postMultipartFormData/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/postMultipartFormData/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/upload/server.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/examples/upload/server.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/adapters.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/adapters.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/http.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/http.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/xhr.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/adapters/xhr.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CancelToken.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CancelToken.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CanceledError.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/CanceledError.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/isCancel.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/cancel/isCancel.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/Axios.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/Axios.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosError.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosError.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosHeaders.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/AxiosHeaders.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/InterceptorManager.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/InterceptorManager.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/buildFullPath.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/buildFullPath.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/dispatchRequest.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/dispatchRequest.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/mergeConfig.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/mergeConfig.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/settle.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/settle.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/transformData.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/core/transformData.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/transitional.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/defaults/transitional.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/data.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/data.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosTransformStream.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosTransformStream.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosURLSearchParams.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/AxiosURLSearchParams.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/HttpStatusCode.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/HttpStatusCode.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/ZlibHeaderTransformStream.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/ZlibHeaderTransformStream.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/bind.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/bind.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/buildURL.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/buildURL.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/callbackify.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/callbackify.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/combineURLs.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/combineURLs.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/cookies.js...\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/cookies.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/deprecatedMethod.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/deprecatedMethod.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToJSON.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToJSON.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToStream.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/formDataToStream.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/fromDataURI.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/fromDataURI.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAbsoluteURL.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAbsoluteURL.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAxiosError.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isAxiosError.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isURLSameOrigin.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/isURLSameOrigin.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/null.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/null.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseHeaders.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseHeaders.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseProtocol.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/parseProtocol.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/readBlob.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/readBlob.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/speedometer.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/speedometer.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/spread.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/spread.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/throttle.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/throttle.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toFormData.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toFormData.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toURLEncodedForm.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/toURLEncodedForm.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/validator.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/helpers/validator.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/manual/promise.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/manual/promise.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/test.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/test.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/__helpers.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/__helpers.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/adapter.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/adapter.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/api.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/api.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/basicAuth.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/basicAuth.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/defaults.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/defaults.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/formdata.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/formdata.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/headers.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/headers.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/instance.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/instance.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/interceptors.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/interceptors.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/options.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/options.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/progress.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/progress.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/promise.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/promise.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/requests.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/requests.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/transform.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/transform.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/xsrf.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/xsrf.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/classes/FormData.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/env/classes/FormData.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/common/utils.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/common/utils.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/cjs/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/cjs/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/esm/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/esm/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts/index.ts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require/index.ts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/ts-require-default/index.ts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CancelToken.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CancelToken.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CanceledError.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/CanceledError.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/isCancel.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/cancel/isCancel.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/AxiosError.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/AxiosError.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/buildFullPath.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/buildFullPath.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/enhanceError.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/enhanceError.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/mergeConfig.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/mergeConfig.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/settle.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/settle.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/transformData.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/core/transformData.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/bind.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/bind.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/buildURL.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/buildURL.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/combineURLs.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/combineURLs.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/cookies.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/cookies.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/formDataToJSON.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/formDataToJSON.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAbsoluteURL.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAbsoluteURL.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAxiosError.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isAxiosError.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isURLSameOrigin.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/isURLSameOrigin.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/parseHeaders.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/parseHeaders.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/spread.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/spread.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/toFormData.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/toFormData.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/validator.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/helpers/validator.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/endsWith.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/endsWith.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/extend.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/extend.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/forEach.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/forEach.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/isX.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/isX.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOf.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOf.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOfTest.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/kindOfTest.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/merge.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/merge.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toArray.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toArray.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toFlatObject.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/toFlatObject.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/trim.spec.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/specs/utils/trim.spec.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/adapters.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/adapters.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/http.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/adapters/http.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/core/AxiosHeaders.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/core/AxiosHeaders.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/defaults/transformReponse.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/defaults/transformReponse.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/fromDataURI.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/fromDataURI.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/parseProtocol.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/helpers/parseProtocol.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/SNYK-JS-AXIOS-1038255.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/SNYK-JS-AXIOS-1038255.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/bugs.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/regression/bugs.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/utils/utils.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/unit/utils/utils.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/Blob.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/Blob.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/FormData.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/FormData.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/URLSearchParams.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/browser/classes/URLSearchParams.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/FormData.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/FormData.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/URLSearchParams.js...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/lib/platform/node/classes/URLSearchParams.js\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/cjs/index.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/cjs/index.ts\n", - "\n", - "\n", - "Extracting /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/esm/index.ts...\n", - "\n", - "\n", - "Finished /workspaces/CodeFuse-Query/tutorial/notebook/axios/test/module/typings/esm/index.ts\n", - "\n", - "\n", - "Merging db files...\n", - "\n", - "\n", - "2023-11-30 08:06:16,700 INFO: Finish extracting data source axios with javascript language Extractor, extraction is Success, execution time is 37.27s.\n", - "\n", - "\n", - "2023-11-30 08:06:16,700 INFO: extract success\n", - "\n", - "\n" - ] + "outputs": [], + "source": [ + "!git clone https://github.com/axios/axios.git -q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STEP 1: 代码数据化。使用 `sparrow database create` 命令创建一个db文件,指定待分析的仓库地址(当前目录下的axios子目录),分析的语言(javscript),以及db文件的存储路径(放置在当前目录下的/db/axios)。执行该命令之后,会生成一份db文件,该文件存储着代码仓库的结构化数据,之后的分析就是针对这份数据进行的。" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-23T03:46:32.220317Z", + "start_time": "2023-11-23T03:46:12.785705Z" } - ], + }, + "outputs": [], "source": [ - "!sparrow database create --source-root axios --data-language-type javascript --output ./db/axios --overwrite" + "!sparrow database create --source-root axios --data-language-type javascript --output ./db/axios --overwrite > /dev/null" ] }, { @@ -1917,357 +120,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-11-30 08:06:18,884 INFO: sparrow 2.0.0\n", + "2023-12-06 07:51:24,946 INFO: sparrow 2.0.0\n", " will start\n", - "2023-11-30 08:06:18,884 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db size: 20.82 MB\n", - "2023-11-30 08:06:18,885 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-5f14djn0/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmpytticwq5.gdl --verbose\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.318455 ms\u001b[0m] package scan\n", - "packages:\n", - "coref::cfamily -> /sparrow-cli/lib-1.0/coref.cfamily.gdl\n", - "coref::go -> /sparrow-cli/lib-1.0/coref.go.gdl\n", - "coref::java -> /sparrow-cli/lib-1.0/coref.java.gdl\n", - "coref::javascript -> /sparrow-cli/lib-1.0/coref.javascript.gdl\n", - "coref::properties -> /sparrow-cli/lib-1.0/coref.properties.gdl\n", - "coref::python -> /sparrow-cli/lib-1.0/coref.python.gdl\n", - "coref::sql -> /sparrow-cli/lib-1.0/coref.sql.gdl\n", - "coref::xml -> /sparrow-cli/lib-1.0/coref.xml.gdl\n", - "modules\n", - "+--coref -> coref\n", - "|--cfamily -> coref::cfamily\n", - "|--go -> coref::go\n", - "|--properties -> coref::properties\n", - "|--java -> coref::java\n", - "|--xml -> coref::xml\n", - "|--javascript -> coref::javascript\n", - "|--python -> coref::python\n", - "+--sql -> coref::sql\n", - "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 321.226 ms\u001b[0m] analyse \n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 73.0303 ms\u001b[0m] lexical analysis\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 88.8125 ms\u001b[0m] syntax parse\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 154.071 ms\u001b[0m] semantic analysis\n", - "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 424.938 ms\u001b[0m] analyse \n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.169767 ms\u001b[0m] lexical analysis\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.099356 ms\u001b[0m] syntax parse\n", - "[\u001b[31;1m!\u001b[0m][\u001b[31;1m 423.992 ms\u001b[0m] semantic analysis\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m0.026108 ms\u001b[0m] ast lowering\n", - "[\u001b[32;1m-\u001b[0m][\u001b[32;1m 0.08019 ms\u001b[0m] code generation\n", - "2023-11-30 08:06:19,350 INFO: godel-script compile time: 0.47s\n", - "2023-11-30 08:06:19,351 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmpytticwq5.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/axios --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-5f14djn0/query.json --verbose\n", - "Parse time: 0.322531sec\n", - "ComponentChecker time: 0.0539951sec [unchanged]\n", - "ComponentInstantiationTransformer time: 6.492e-06sec [changed]\n", - "IODefaultsTransformer time: 0.000682093sec [changed]\n", - "SimplifyAggregateTargetExpressionTransformer time: 0.0616513sec [unchanged]\n", - "UniqueAggregationVariablesTransformer time: 0.0257786sec [changed]\n", - "ResolveAnonymousRecordAliases time: 1.72321sec [unchanged]\n", - "FoldAnonymousRecords time: 0.0290812sec [unchanged]\n", - "GroundWitnessesTransformer time: 0.0264373sec [unchanged]\n", - "UniqueAggregationVariablesTransformer time: 0.0269212sec [unchanged]\n", - "MaterializeSingletonAggregationTransformer time: 0.0618322sec [unchanged]\n", - "MaterializeAggregationQueriesTransformer time: 0.0847883sec [changed]\n", - "MaterializeAggregationQueriesTransformer time: 0.0880564sec [unchanged]\n", - "RemoveRedundantSumsTransformer time: 0.0334785sec [unchanged]\n", - "NormaliseGeneratorsTransformer time: 0.033902sec [changed]\n", - "ResolveAliasesTransformer time: 0.212708sec [changed]\n", - "RemoveBooleanConstraintsTransformer time: 0.0932827sec [unchanged]\n", - "ResolveAliasesTransformer time: 0.153156sec [unchanged]\n", - "InlineUnmarkExcludedTransform time: 0.00666753sec [unchanged]\n", - "InlineRelationsTransformer time: 4.35275sec [changed]\n", - "GroundedTermsChecker time: 0.361505sec [unchanged]\n", - "ResolveAliasesTransformer time: 0.264989sec [changed]\n", - "RemoveRedundantRelationsTransformer time: 0.264423sec [changed]\n", - "RemoveRelationCopiesTransformer time: 0.0466181sec [changed]\n", - "RemoveEmptyRelationsTransformer time: 0.000674859sec [unchanged]\n", - "ReplaceSingletonVariablesTransformer time: 0.000762834sec [changed]\n", - "ReduceExistentialsTransformer time: 0.00158046sec [unchanged]\n", - "RemoveRedundantRelationsTransformer time: 0.001055sec [unchanged]\n", - "RemoveRelationCopiesTransformer time: 0.000154449sec [unchanged]\n", - "NameUnnamedVariablesTransformer time: 0.000635086sec [changed]\n", - "PartitionBodyLiteralsTransformer time: 0.00173047sec [unchanged]\n", - "ReplaceSingletonVariablesTransformer time: 0.00111812sec [changed]\n", - "NameUnnamedVariablesTransformer time: 0.000596213sec [changed]\n", - "ReplaceSingletonVariablesTransformer time: 0.00109794sec [changed]\n", - "RemoveRelationCopiesTransformer time: 0.00039625sec [unchanged]\n", - "RemoveEmptyRelationsTransformer time: 0.000318134sec [unchanged]\n", - "RemoveRedundantRelationsTransformer time: 0.00093184sec [unchanged]\n", - "RemoveRelationCopiesTransformer time: 0.000415616sec [unchanged]\n", - "ResolveAliasesTransformer time: 0.00175141sec [unchanged]\n", - "RemoveRelationCopiesTransformer time: 0.000151152sec [unchanged]\n", - "RemoveEmptyRelationsTransformer time: 0.000334474sec [unchanged]\n", - "RemoveRedundantRelationsTransformer time: 0.000918365sec [unchanged]\n", - "NameUnnamedVariablesTransformer time: 0.000581756sec [changed]\n", - "ReplaceSingletonVariablesTransformer time: 0.000948681sec [changed]\n", - "RemoveRelationCopiesTransformer time: 0.000388084sec [unchanged]\n", - "RemoveEmptyRelationsTransformer time: 0.000326269sec [unchanged]\n", - "RemoveRedundantRelationsTransformer time: 0.000937009sec [unchanged]\n", - "RemoveEmptyRelationsTransformer time: 0.00056788sec [unchanged]\n", - "AddNullariesToAtomlessAggregatesTransformer time: 0.000250267sec [unchanged]\n", - "ExecutionPlanChecker time: 0.00653227sec [unchanged]\n", - "IOAttributesTransformer time: 0.0022946sec [changed]\n", - "ExpandFilterTransformer time: 0.000583058sec [unchanged]\n", - "HoistConditionsTransformer time: 0.00351101sec [changed]\n", - "MakeIndexTransformer time: 0.00182146sec [changed]\n", - "ExpandFilterTransformer time: 0.000903096sec [changed]\n", - "HoistConditionsTransformer time: 0.00303112sec [changed]\n", - "MakeIndexTransformer time: 0.00118225sec [unchanged]\n", - "IfConversionTransformer time: 0.000926129sec [changed]\n", - "IfExistsConversionTransformer time: 0.00153311sec [changed]\n", - "CollapseFiltersTransformer time: 0.000576507sec [changed]\n", - "TupleIdTransformer time: 0.000705397sec [changed]\n", - "HoistAggregateTransformer time: 0.00174991sec [unchanged]\n", - "TupleIdTransformer time: 0.000843084sec [unchanged]\n", - "ExpandFilterTransformer time: 0.000961545sec [changed]\n", - "HoistConditionsTransformer time: 0.00345245sec [changed]\n", - "CollapseFiltersTransformer time: 0.000573771sec [unchanged]\n", - "EliminateDuplicatesTransformer time: 0.000696891sec [changed]\n", - "ReorderConditionsTransformer time: 0.00239002sec [changed]\n", - "ReorderFilterBreak time: 0.00047662sec [unchanged]\n", - "ReportIndexTransformer time: 0.00252848sec [unchanged]\n", - "Starting work on AllData_DBIndex([1,1]). in file [33021:1-33021:25]\n", - "Starting work on AllData_S_20N_5coref10javascript_10CallSiteDO([1,1],invoke_expression_oid,callee_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10CallSiteDO(invoke_expression_oid,callee_oid). in file [33013:1-33013:217]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_10CallSiteDO(db_id,item) :- AllData_S_20N_5coref10javascript_10CallSiteDO(db_id,item,_). in file [19242:1-19242:127]\n", - "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10CallSiteDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_10CallSiteDO(db,__temp_3), AllData_DBIndex(db). in file [25266:1-25266:571]\n", - "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(__temp_3,db,__temp_1,__temp_3) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,__temp_3,__temp_1), DataConstraintHelper_f_37S_20N_5coref10javascript_10CallSiteDO_7__all__(__temp_3,db,_,_), AllData_DBIndex(db). in file [29708:1-29708:559]\n", - "Starting work on AllData_S_20N_5coref10javascript_8CallSite(db_id,callee_oid,invoke_expression_oid) :- DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(_,db_id,callee_oid,invoke_expression_oid). in file [33686:1-33686:203]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_8CallSite(db_id,item) :- AllData_S_20N_5coref10javascript_8CallSite(db_id,_,item). in file [19399:1-19399:121]\n", - "Starting work on f_37S_20N_5coref10javascript_10CallSiteDO_12getCalleeOid(__temp,self) :- AllData_S_20N_5coref10javascript_10CallSiteDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_10CallSiteDO(_,self). in file [25267:1-25267:226]\n", - "Starting work on f_34S_20N_5coref10javascript_8CallSite_12getCalleeOid(__temp_3,self) :- AllData_S_20N_5coref10javascript_8CallSite(_,_,self), f_37S_20N_5coref10javascript_10CallSiteDO_12getCalleeOid(__temp_3,self), TypeCheck_S_20N_5coref10javascript_8CallSite(_,self). in file [22664:1-22664:491]\n", - "Starting work on AllData_S_20N_5coref10javascript_6NodeDO([1,1],oid,kind,parent_oid,index,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_6NodeDO(oid,kind,parent_oid,index,location_oid). in file [33001:1-33001:225]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_6NodeDO(db_id,item) :- AllData_S_20N_5coref10javascript_6NodeDO(db_id,item,_,_,_,_). in file [28721:1-28721:126]\n", - "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_6,db,__temp_6,__temp_1,__temp_2,__temp_3,__temp_4) :- AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6NodeDO(_,__temp_6,_,_,_,__temp_4), TypeCheck_S_20N_5coref10javascript_6NodeDO(db,__temp_6), AllData_DBIndex(db). in file [21616:1-21616:803]\n", - "Starting work on f_32S_20N_5coref10javascript_6NodeDO_7getKind(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,__temp,_,_,_), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21617:1-21617:198]\n", - "Starting work on f_32S_20N_5coref10javascript_6NodeDO_12getParentOid(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,_,__temp,_,_), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21618:1-21618:211]\n", - "Starting work on f_32S_20N_5coref10javascript_6NodeDO_14getLocationOid(__temp,self) :- AllData_S_20N_5coref10javascript_6NodeDO(_,self,_,_,_,__temp), TypeCheck_S_20N_5coref10javascript_6NodeDO(_,self). in file [21620:1-21620:215]\n", - "Starting work on AllData_S_20N_5coref10javascript_10TopLevelDO([1,1],oid,kind,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10TopLevelDO(oid,kind,location_oid). in file [33000:1-33000:197]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_10TopLevelDO(db_id,item) :- AllData_S_20N_5coref10javascript_10TopLevelDO(db_id,item,_,_). in file [31362:1-31362:130]\n", - "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_4,db,__temp_4,__temp_1,__temp_2) :- AllData_S_20N_5coref10javascript_10TopLevelDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_10TopLevelDO(_,__temp_4,_,__temp_2), TypeCheck_S_20N_5coref10javascript_10TopLevelDO(db,__temp_4), AllData_DBIndex(db). in file [21266:1-21266:608]\n", - "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,__temp_2) :- DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_2,db,_,_,_,_,_), AllData_DBIndex(db). in file [27863:1-27863:352]\n", - "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,__temp_2) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_2,db,_,_,_), AllData_DBIndex(db). in file [27864:1-27864:370]\n", - "Starting work on AllData_S_20N_5coref10javascript_4Node(db_id,id) :- DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(_,db_id,id). in file [33780:1-33780:133]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_7getKind(__temp_2,__temp_3) :- f_32S_20N_5coref10javascript_6NodeDO_7getKind(__temp_2,__temp_3), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_3,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_3). in file [27865:1-27865:421]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_7getKind(303,__temp_2) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_2). in file [27866:1-27866:369]\n", - "Starting work on f_20N_5coref10javascript_14isAsExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 228, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19806:1-19806:184]\n", - "Starting work on f_20N_5coref10javascript_15isArrowFunction(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 213, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27361:1-27361:185]\n", - "Starting work on f_20N_5coref10javascript_15isJsxExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 287, AllData_S_20N_5coref10javascript_4Node(_,node). in file [24696:1-24696:185]\n", - "Starting work on f_20N_5coref10javascript_15isSpreadElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 224, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30226:1-30226:185]\n", - "Starting work on f_20N_5coref10javascript_16isVoidExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 216, AllData_S_20N_5coref10javascript_4Node(_,node). in file [26016:1-26016:186]\n", - "Starting work on f_20N_5coref10javascript_17isAwaitExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 217, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29202:1-29202:187]\n", - "Starting work on f_20N_5coref10javascript_18isDeleteExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 214, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29800:1-29800:188]\n", - "Starting work on f_20N_5coref10javascript_18isTypeOfExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 215, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27142:1-27142:188]\n", - "Starting work on f_20N_5coref10javascript_23isPrefixUnaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 218, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17854:1-17854:193]\n", - "Starting work on f_20N_5coref10javascript_16isCallExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 207, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30235:1-30235:186]\n", - "Starting work on f_20N_5coref10javascript_12isIdentifier(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 79, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18013:1-18013:181]\n", - "Starting work on f_20N_5coref10javascript_12isJsxElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 277, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29700:1-29700:182]\n", - "Starting work on f_20N_5coref10javascript_13isJsxFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 281, AllData_S_20N_5coref10javascript_4Node(_,node). in file [27143:1-27143:183]\n", - "Starting work on f_20N_5coref10javascript_13isNullKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 104, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32737:1-32737:183]\n", - "Starting work on f_20N_5coref10javascript_13isNullLiteral(node) :- f_20N_5coref10javascript_13isNullKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25380:1-25380:158]\n", - "Starting work on f_20N_5coref10javascript_14isMetaProperty(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 230, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31400:1-31400:184]\n", - "Starting work on f_20N_5coref10javascript_15isJsxAttributes(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 285, AllData_S_20N_5coref10javascript_4Node(_,node). in file [28545:1-28545:185]\n", - "Starting work on f_20N_5coref10javascript_15isNewExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 208, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19398:1-19398:185]\n", - "Starting work on f_20N_5coref10javascript_13isTrueKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 110, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18120:1-18120:183]\n", - "Starting work on f_20N_5coref10javascript_14isFalseKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 95, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22647:1-22647:183]\n", - "Starting work on f_20N_5coref10javascript_16isBooleanLiteral(node) :- f_20N_5coref10javascript_13isTrueKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [21097:1-21097:161]\n", - "Starting work on f_20N_5coref10javascript_16isBooleanLiteral(node) :- f_20N_5coref10javascript_14isFalseKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [21098:1-21098:162]\n", - "Starting work on f_20N_5coref10javascript_13isThisKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 108, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22002:1-22002:183]\n", - "Starting work on f_20N_5coref10javascript_16isThisExpression(node) :- f_20N_5coref10javascript_13isThisKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [26893:1-26893:161]\n", - "Starting work on f_20N_5coref10javascript_17isClassExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 225, AllData_S_20N_5coref10javascript_4Node(_,node). in file [24805:1-24805:187]\n", - "Starting work on f_20N_5coref10javascript_14isSuperKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 106, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23826:1-23826:184]\n", - "Starting work on f_20N_5coref10javascript_17isSuperExpression(node) :- f_20N_5coref10javascript_14isSuperKeyword(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [32044:1-32044:163]\n", - "Starting work on f_20N_5coref10javascript_15isImportKeyword(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 100, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31027:1-31027:185]\n", - "Starting work on f_20N_5coref10javascript_15isBigIntLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 9, AllData_S_20N_5coref10javascript_4Node(_,node). in file [30175:1-30175:183]\n", - "Starting work on f_20N_5coref10javascript_15isStringLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 10, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17408:1-17408:184]\n", - "Starting work on f_20N_5coref10javascript_16isNumericLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 8, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25947:1-25947:184]\n", - "Starting work on f_20N_5coref10javascript_26isRegularExpressionLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 13, AllData_S_20N_5coref10javascript_4Node(_,node). in file [22641:1-22641:195]\n", - "Starting work on f_20N_5coref10javascript_31isNoSubstitutionTemplateLiteral(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 14, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17577:1-17577:200]\n", - "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_16isNumericLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19441:1-19441:167]\n", - "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_15isBigIntLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19442:1-19442:166]\n", - "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_15isStringLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19443:1-19443:166]\n", - "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_26isRegularExpressionLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19444:1-19444:177]\n", - "Starting work on f_20N_5coref10javascript_19isLiteralExpression(node) :- f_20N_5coref10javascript_31isNoSubstitutionTemplateLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [19445:1-19445:182]\n", - "Starting work on f_20N_5coref10javascript_19isPrivateIdentifier(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 80, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17747:1-17747:188]\n", - "Starting work on f_20N_5coref10javascript_20isFunctionExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 212, AllData_S_20N_5coref10javascript_4Node(_,node). in file [19397:1-19397:190]\n", - "Starting work on f_20N_5coref10javascript_20isTemplateExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 222, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20106:1-20106:190]\n", - "Starting work on f_20N_5coref10javascript_23isJsxSelfClosingElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 278, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32444:1-32444:193]\n", - "Starting work on f_20N_5coref10javascript_24isArrayLiteralExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 203, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25569:1-25569:194]\n", - "Starting work on f_20N_5coref10javascript_25isObjectLiteralExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 204, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31871:1-31871:195]\n", - "Starting work on f_20N_5coref10javascript_25isParenthesizedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 211, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25685:1-25685:195]\n", - "Starting work on f_20N_5coref10javascript_25isElementAccessExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 206, AllData_S_20N_5coref10javascript_4Node(_,node). in file [25036:1-25036:195]\n", - "Starting work on f_20N_5coref10javascript_26isPropertyAccessExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 205, AllData_S_20N_5coref10javascript_4Node(_,node). in file [28244:1-28244:196]\n", - "Starting work on f_20N_5coref10javascript_18isAccessExpression(node) :- f_20N_5coref10javascript_26isPropertyAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22659:1-22659:176]\n", - "Starting work on f_20N_5coref10javascript_18isAccessExpression(node) :- f_20N_5coref10javascript_25isElementAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22660:1-22660:175]\n", - "Starting work on f_20N_5coref10javascript_26isTaggedTemplateExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 209, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18948:1-18948:196]\n", - "Starting work on f_20N_5coref10javascript_19isNonNullExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 229, AllData_S_20N_5coref10javascript_4Node(_,node). in file [31148:1-31148:189]\n", - "Starting work on f_20N_5coref10javascript_28isPartiallyEmittedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 348, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18458:1-18458:198]\n", - "Starting work on f_20N_5coref10javascript_30isSyntheticReferenceExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 352, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20370:1-20370:200]\n", - "Starting work on f_20N_5coref10javascript_24isPostfixUnaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 219, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32842:1-32842:194]\n", - "Starting work on f_20N_5coref10javascript_25isTypeAssertionExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 210, AllData_S_20N_5coref10javascript_4Node(_,node). in file [16806:1-16806:195]\n", - "Starting work on f_20N_5coref10javascript_17isYieldExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 223, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29703:1-29703:187]\n", - "Starting work on f_20N_5coref10javascript_18isBinaryExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 220, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17664:1-17664:188]\n", - "Starting work on f_20N_5coref10javascript_19isJsxClosingElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 280, AllData_S_20N_5coref10javascript_4Node(_,node). in file [29843:1-29843:189]\n", - "Starting work on f_20N_5coref10javascript_19isJsxOpeningElement(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 279, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23102:1-23102:189]\n", - "Starting work on f_20N_5coref10javascript_19isOmittedExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 226, AllData_S_20N_5coref10javascript_4Node(_,node). in file [32498:1-32498:189]\n", - "Starting work on f_20N_5coref10javascript_20isJsxClosingFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 283, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20001:1-20001:190]\n", - "Starting work on f_20N_5coref10javascript_20isJsxOpeningFragment(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 282, AllData_S_20N_5coref10javascript_4Node(_,node). in file [20874:1-20874:190]\n", - "Starting work on f_20N_5coref10javascript_21isCommaListExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 349, AllData_S_20N_5coref10javascript_4Node(_,node). in file [17298:1-17298:191]\n", - "Starting work on f_20N_5coref10javascript_21isSyntheticExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 231, AllData_S_20N_5coref10javascript_4Node(_,node). in file [23938:1-23938:191]\n", - "Starting work on f_20N_5coref10javascript_23isConditionalExpression(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 221, AllData_S_20N_5coref10javascript_4Node(_,node). in file [18951:1-18951:193]\n", - "Starting work on f_20N_5coref10javascript_11isDecorator(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), __temp = 164, AllData_S_20N_5coref10javascript_4Node(_,node). in file [26121:1-26121:181]\n", - "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_16isCallExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22040:1-22040:168]\n", - "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_15isNewExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22041:1-22041:167]\n", - "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_26isTaggedTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22042:1-22042:178]\n", - "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_11isDecorator(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22043:1-22043:163]\n", - "Starting work on f_20N_5coref10javascript_20isCallLikeExpression(node) :- f_20N_5coref10javascript_19isJsxOpeningElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22044:1-22044:171]\n", - "Starting work on f_20N_5coref10javascript_21isMayInvokeExpression(node) :- f_20N_5coref10javascript_20isCallLikeExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18008:1-18008:173]\n", - "Starting work on f_20N_5coref10javascript_21isMayInvokeExpression(node) :- f_20N_5coref10javascript_18isAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18009:1-18009:171]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_12getParentOid(__temp_2,__temp_3) :- f_32S_20N_5coref10javascript_6NodeDO_12getParentOid(__temp_2,__temp_3), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_3,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_3). in file [27867:1-27867:433]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_9getParent(__temp,self) :- f_30S_20N_5coref10javascript_4Node_12getParentOid(__temp,self), AllData_S_20N_5coref10javascript_4Node(_,__temp), AllData_S_20N_5coref10javascript_4Node(_,self). in file [27868:1-27868:312]\n", - "Starting work on f_20N_5coref10javascript_18isImportExpression(node) :- f_20N_5coref10javascript_15isImportKeyword(node), f_30S_20N_5coref10javascript_4Node_9getParent(__temp,node), f_20N_5coref10javascript_16isCallExpression(__temp), AllData_S_20N_5coref10javascript_4Node(_,__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18793:1-18793:349]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_19isLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25194:1-25194:170]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_13isNullLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25195:1-25195:164]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_16isBooleanLiteral(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25196:1-25196:167]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_12isIdentifier(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25197:1-25197:163]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_19isPrivateIdentifier(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25198:1-25198:170]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_16isThisExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25199:1-25199:167]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_17isSuperExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25200:1-25200:168]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_18isImportExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25201:1-25201:169]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_24isArrayLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25202:1-25202:175]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_25isObjectLiteralExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25203:1-25203:176]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_15isJsxAttributes(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25204:1-25204:166]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_15isNewExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25205:1-25205:166]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_25isParenthesizedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25206:1-25206:176]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_20isFunctionExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25207:1-25207:171]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_20isTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25208:1-25208:171]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_17isClassExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25209:1-25209:168]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_14isMetaProperty(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25210:1-25210:165]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_12isJsxElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25211:1-25211:163]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_23isJsxSelfClosingElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25212:1-25212:174]\n", - "Starting work on f_20N_5coref10javascript_19isPrimaryExpression(node) :- f_20N_5coref10javascript_13isJsxFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25213:1-25213:164]\n", - "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_19isPrimaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16965:1-16965:169]\n", - "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_26isPropertyAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16966:1-16966:176]\n", - "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_25isElementAccessExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16967:1-16967:175]\n", - "Starting work on f_20N_5coref10javascript_18isMemberExpression(node) :- f_20N_5coref10javascript_26isTaggedTemplateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [16968:1-16968:176]\n", - "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_18isMemberExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22653:1-22653:174]\n", - "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_28isPartiallyEmittedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22654:1-22654:184]\n", - "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_16isCallExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22655:1-22655:172]\n", - "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_19isNonNullExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22656:1-22656:175]\n", - "Starting work on f_20N_5coref10javascript_24isLeftHandSideExpression(node) :- f_20N_5coref10javascript_30isSyntheticReferenceExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22657:1-22657:186]\n", - "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_24isLeftHandSideExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25696:1-25696:174]\n", - "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_23isPrefixUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25697:1-25697:173]\n", - "Starting work on f_20N_5coref10javascript_18isUpdateExpression(node) :- f_20N_5coref10javascript_24isPostfixUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [25698:1-25698:174]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isUpdateExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22738:1-22738:167]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_25isTypeAssertionExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22739:1-22739:174]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isDeleteExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22740:1-22740:167]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_18isTypeOfExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22741:1-22741:167]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_16isVoidExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22742:1-22742:165]\n", - "Starting work on f_20N_5coref10javascript_17isUnaryExpression(node) :- f_20N_5coref10javascript_17isAwaitExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [22743:1-22743:166]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_17isUnaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18558:1-18558:161]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isArrowFunction(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18559:1-18559:159]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_18isBinaryExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18560:1-18560:162]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_23isConditionalExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18561:1-18561:167]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_17isYieldExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18562:1-18562:161]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isSpreadElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18563:1-18563:159]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isOmittedExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18564:1-18564:163]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_14isAsExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18565:1-18565:158]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_21isSyntheticExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18566:1-18566:165]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_21isCommaListExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18567:1-18567:165]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isJsxOpeningElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18568:1-18568:163]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_19isJsxClosingElement(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18569:1-18569:163]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_20isJsxOpeningFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18570:1-18570:164]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_20isJsxClosingFragment(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18571:1-18571:164]\n", - "Starting work on f_20N_5coref10javascript_12isExpression(node) :- f_20N_5coref10javascript_15isJsxExpression(node), AllData_S_20N_5coref10javascript_4Node(_,node). in file [18572:1-18572:159]\n", - "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(__temp_2,db,__temp_2) :- f_20N_5coref10javascript_12isExpression(__temp_2), DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,_), AllData_DBIndex(db). in file [18947:1-18947:394]\n", - "Starting work on AllData_S_20N_5coref10javascript_10Expression(db_id,id) :- DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(_,db_id,id). in file [33764:1-33764:147]\n", - "Starting work on DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp_4,db,__temp_4) :- f_20N_5coref10javascript_21isMayInvokeExpression(__temp_4), DataConstraintHelper_f_37S_20N_5coref10javascript_10Expression_7__all__(__temp_4,db,_), AllData_DBIndex(db). in file [24223:1-24223:542]\n", - "Starting work on AllData_S_20N_5coref10javascript_19MayInvokeExpression(db_id,id) :- DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(_,db_id,id). in file [33881:1-33881:165]\n", - "Starting work on f_37S_20N_5coref10javascript_10TopLevelDO_14getLocationOid(__temp,self) :- AllData_S_20N_5coref10javascript_10TopLevelDO(_,self,_,__temp), TypeCheck_S_20N_5coref10javascript_10TopLevelDO(_,self). in file [21268:1-21268:230]\n", - "Starting work on AllData_S_20N_5coref10javascript_10LocationDO([1,1],oid,file_oid,start_line_number,start_column_number,end_line_number,end_column_number,text) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_10LocationDO(oid,file_oid,start_line_number,start_column_number,end_line_number,end_column_number,text). in file [32995:1-32995:341]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_10LocationDO(db_id,item) :- AllData_S_20N_5coref10javascript_10LocationDO(db_id,item,_,_,_,_,_,_). in file [21270:1-21270:142]\n", - "Starting work on DataConstraintHelper_f_37S_20N_5coref10javascript_10LocationDO_7__all__(__temp_8,db,__temp_8,__temp_1,__temp_2,__temp_3,__temp_4,__temp_5,__temp_6) :- AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,__temp_1,_,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,__temp_3,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,__temp_4,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,__temp_5,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,_,__temp_6), TypeCheck_S_20N_5coref10javascript_10LocationDO(db,__temp_8), AllData_DBIndex(db). in file [22203:1-22203:1170]\n", - "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_8,db,__temp_5,__temp_4,__temp_1,__temp_8,__temp_3,__temp_2,__temp_6) :- AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,__temp_1,_,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,__temp_2,_,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,__temp_3,_,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,__temp_4,_,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,__temp_5,_), AllData_S_20N_5coref10javascript_10LocationDO(_,__temp_8,_,_,_,_,_,__temp_6), DataConstraintHelper_f_37S_20N_5coref10javascript_10LocationDO_7__all__(__temp_8,db,_,_,_,_,_,_,_), AllData_DBIndex(db). in file [23326:1-23326:1159]\n", - "Starting work on AllData_S_20N_5coref10javascript_8Location(db_id,end_column_number,end_line_number,file_oid,oid,start_column_number,start_line_number,text) :- DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(_,db_id,end_column_number,end_line_number,file_oid,oid,start_column_number,start_line_number,text). in file [33914:1-33914:327]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_8Location(db_id,item) :- AllData_S_20N_5coref10javascript_8Location(db_id,_,_,_,item,_,_,_). in file [30574:1-30574:136]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_4,__temp_5) :- f_32S_20N_5coref10javascript_6NodeDO_14getLocationOid(__temp_4,__temp_5), DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_4,_,_,_,_,_,_,_,_), DataConstraintHelper_f_32S_20N_5coref10javascript_6NodeDO_7__all__(__temp_5,_,_,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_5). in file [27870:1-27870:608]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_4,__temp_5) :- f_37S_20N_5coref10javascript_10TopLevelDO_14getLocationOid(__temp_4,__temp_5), DataConstraintHelper_f_34S_20N_5coref10javascript_8Location_7__all__(__temp_4,_,_,_,_,_,_,_,_), DataConstraintHelper_f_37S_20N_5coref10javascript_10TopLevelDO_7__all__(__temp_5,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_5). in file [27871:1-27871:635]\n", - "Starting work on f_37S_20N_5coref10javascript_10LocationDO_10getFileOid(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,__temp,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22204:1-22204:221]\n", - "Starting work on f_34S_20N_5coref10javascript_8Location_10getFileOid(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_10getFileOid(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32025:1-32025:985]\n", - "Starting work on f_37S_20N_5coref10javascript_10LocationDO_16getEndLineNumber(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,_,_,_,__temp,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22207:1-22207:235]\n", - "Starting work on f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_16getEndLineNumber(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32024:1-32024:997]\n", - "Starting work on f_37S_20N_5coref10javascript_10LocationDO_18getStartLineNumber(__temp,self) :- AllData_S_20N_5coref10javascript_10LocationDO(_,self,_,__temp,_,_,_,_), TypeCheck_S_20N_5coref10javascript_10LocationDO(_,self). in file [22205:1-22205:239]\n", - "Starting work on f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_8,self) :- AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), AllData_S_20N_5coref10javascript_8Location(_,_,_,_,self,_,_,_), f_37S_20N_5coref10javascript_10LocationDO_18getStartLineNumber(__temp_8,self), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [32027:1-32027:1001]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(0,0,168). in file [16915:1-16915:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(1,1,170). in file [16916:1-16916:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(2,2,171). in file [16917:1-16917:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(3,3,172). in file [16918:1-16918:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(4,4,212). in file [16919:1-16919:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(5,5,213). in file [16920:1-16920:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(6,6,255). in file [16921:1-16921:183]\n", - "Starting work on AllData_S_20N_5coref10javascript_17fact_temp_set_650(db_id,uid,e0) :- DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(_,uid,e0), AllData_DBIndex(db_id). in file [33656:1-33656:190]\n", - "Starting work on f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(__temp) :- AllData_S_20N_5coref10javascript_17fact_temp_set_650(_,__temp_1,__temp), DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_650_7__all__(__temp_1,_,_). in file [22639:1-22639:277]\n", - "Starting work on f_20N_5coref10javascript_25isFunctionLikeDeclaration(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [29847:1-29847:260]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(0,0,167). in file [21258:1-21258:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(1,1,173). in file [21259:1-21259:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(2,2,174). in file [21260:1-21260:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(3,3,175). in file [21261:1-21261:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(4,4,178). in file [21262:1-21262:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(5,5,179). in file [21263:1-21263:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(6,6,315). in file [21264:1-21264:183]\n", - "Starting work on DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(7,7,321). in file [21265:1-21265:183]\n", - "Starting work on AllData_S_20N_5coref10javascript_17fact_temp_set_634(db_id,uid,e0) :- DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(_,uid,e0), AllData_DBIndex(db_id). in file [33715:1-33715:190]\n", - "Starting work on f_20N_5coref10javascript_29isFunctionTypeOrSignatureKind(__temp) :- AllData_S_20N_5coref10javascript_17fact_temp_set_634(_,__temp_1,__temp), DataConstraintHelper_f_44S_20N_5coref10javascript_17fact_temp_set_634_7__all__(__temp_1,_,_). in file [22603:1-22603:277]\n", - "Starting work on f_20N_5coref10javascript_18isFunctionLikeKind(kind) :- f_20N_5coref10javascript_29isFunctionLikeDeclarationKind(kind). in file [19875:1-19875:128]\n", - "Starting work on f_20N_5coref10javascript_18isFunctionLikeKind(kind) :- f_20N_5coref10javascript_29isFunctionTypeOrSignatureKind(kind). in file [19876:1-19876:128]\n", - "Starting work on f_20N_5coref10javascript_14isFunctionLike(node) :- f_30S_20N_5coref10javascript_4Node_7getKind(__temp,node), f_20N_5coref10javascript_18isFunctionLikeKind(__temp), AllData_S_20N_5coref10javascript_4Node(_,node). in file [28546:1-28546:238]\n", - "Starting work on DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(__temp_2,db,__temp_2) :- f_20N_5coref10javascript_14isFunctionLike(__temp_2), DataConstraintHelper_f_30S_20N_5coref10javascript_4Node_7__all__(__temp_2,db,_), AllData_DBIndex(db). in file [22281:1-22281:398]\n", - "Starting work on AllData_S_20N_5coref10javascript_12FunctionLike(db_id,id) :- DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(_,db_id,id). in file [33575:1-33575:151]\n", - "Starting work on f_39S_20N_5coref10javascript_12FunctionLike_11getLocation(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_11getLocation(__temp_2,self), AllData_S_20N_5coref10javascript_12FunctionLike(_,self). in file [26883:1-26883:336]\n", - "Starting work on DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_4,db,__temp_4) :- f_20N_5coref10javascript_25isFunctionLikeDeclaration(__temp_4), DataConstraintHelper_f_39S_20N_5coref10javascript_12FunctionLike_7__all__(__temp_4,db,_), AllData_DBIndex(db). in file [19518:1-19518:556]\n", - "Starting work on AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(db_id,id) :- DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(_,db_id,id). in file [33668:1-33668:173]\n", - "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_2,self) :- f_39S_20N_5coref10javascript_12FunctionLike_11getLocation(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,self). in file [28126:1-28126:378]\n", - "Starting work on f_34S_20N_5coref10javascript_8CallSite_9getCallee(__temp_2,self) :- f_34S_20N_5coref10javascript_8CallSite_12getCalleeOid(__temp_2,self), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_2,_,_), TypeCheck_S_20N_5coref10javascript_8CallSite(_,self). in file [29709:1-29709:409]\n", - "Starting work on f_46S_20N_5coref10javascript_19MayInvokeExpression_9getCallee(__temp_2,self) :- f_34S_20N_5coref10javascript_8CallSite_9getCallee(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp_2), DataConstraintHelper_f_34S_20N_5coref10javascript_8CallSite_7__all__(self,_,_,_), AllData_S_20N_5coref10javascript_19MayInvokeExpression(_,self). in file [24224:1-24224:594]\n", - "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_12getACallSite(__temp_1,__temp) :- f_46S_20N_5coref10javascript_19MayInvokeExpression_9getCallee(__temp,__temp_1), DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp_1,_,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp). in file [19536:1-19536:370]\n", - "Starting work on AllData_S_20N_5coref10javascript_12NodeSymbolDO([1,1],node_oid,symbol_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_12NodeSymbolDO(node_oid,symbol_oid). in file [33011:1-33011:195]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(db_id,item) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(db_id,item,_). in file [30582:1-30582:131]\n", - "Starting work on DataConstraintHelper_f_39S_20N_5coref10javascript_12NodeSymbolDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(db,__temp_3), AllData_DBIndex(db). in file [22038:1-22038:527]\n", - "Starting work on f_39S_20N_5coref10javascript_12NodeSymbolDO_12getSymbolOid(__temp,self) :- AllData_S_20N_5coref10javascript_12NodeSymbolDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_12NodeSymbolDO(_,self). in file [22039:1-22039:232]\n", - "Starting work on AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO([1,1],node_oid,function_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(node_oid,function_oid). in file [33008:1-33008:221]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db_id,item) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db_id,item,_). in file [32300:1-32300:153]\n", - "Starting work on DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_7__all__(__temp_3,db,__temp_3,__temp_1) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,__temp_3,__temp_1), TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(db,__temp_3), AllData_DBIndex(db). in file [23183:1-23183:578]\n", - "Starting work on f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_14getFunctionOid(__temp,self) :- AllData_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,self,__temp), TypeCheck_S_20N_5coref10javascript_23FunctionEnclosingNodeDO(_,self). in file [23184:1-23184:269]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_20getEnclosingFunction(__temp_5,__temp_4) :- f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_14getFunctionOid(__temp_5,__temp_4), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionEnclosingNodeDO_7__all__(__temp_4,_,_,_), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_5,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_4). in file [27891:1-27891:752]\n", - "Starting work on f_37S_20N_5coref10javascript_10Expression_20getEnclosingFunction(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_20getEnclosingFunction(__temp_2,self), AllData_S_20N_5coref10javascript_10Expression(_,self). in file [22585:1-22585:348]\n", - "Starting work on f_46S_20N_5coref10javascript_19MayInvokeExpression_20getEnclosingFunction(__temp_2,self) :- f_37S_20N_5coref10javascript_10Expression_20getEnclosingFunction(__temp_2,self), AllData_S_20N_5coref10javascript_19MayInvokeExpression(_,self). in file [20927:1-20927:382]\n", - "Starting work on AllData_S_20N_5coref10javascript_6FileDO([1,1],oid,name,extension,relative_path,location_oid) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_6FileDO(oid,name,extension,relative_path,location_oid). in file [32997:1-32997:239]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_6FileDO(db_id,item) :- AllData_S_20N_5coref10javascript_6FileDO(db_id,item,_,_,_,_). in file [32306:1-32306:126]\n", - "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6FileDO_7__all__(__temp_6,db,__temp_6,__temp_1,__temp_2,__temp_3,__temp_4) :- AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,_,__temp_4), TypeCheck_S_20N_5coref10javascript_6FileDO(db,__temp_6), AllData_DBIndex(db). in file [26743:1-26743:824]\n", - "Starting work on DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp_6,db,__temp_2,__temp_4,__temp_1,__temp_6,__temp_3) :- AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,__temp_1,_,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,__temp_2,_,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,__temp_3,_), AllData_S_20N_5coref10javascript_6FileDO(_,__temp_6,_,_,_,__temp_4), DataConstraintHelper_f_32S_20N_5coref10javascript_6FileDO_7__all__(__temp_6,db,_,_,_,_,_), AllData_DBIndex(db). in file [31979:1-31979:813]\n", - "Starting work on AllData_S_20N_5coref10javascript_4File(db_id,extension,location_oid,name,oid,relative_path) :- DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(_,db_id,extension,location_oid,name,oid,relative_path). in file [33619:1-33619:227]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_4File(db_id,item) :- AllData_S_20N_5coref10javascript_4File(db_id,_,_,_,item,_). in file [29719:1-29719:122]\n", - "Starting work on f_34S_20N_5coref10javascript_8Location_7getFile(__temp_2,self) :- f_34S_20N_5coref10javascript_8Location_10getFileOid(__temp_2,self), DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp_2,_,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [23327:1-23327:360]\n", - "Starting work on f_32S_20N_5coref10javascript_6FileDO_15getRelativePath(__temp,self) :- AllData_S_20N_5coref10javascript_6FileDO(_,self,_,_,__temp,_), TypeCheck_S_20N_5coref10javascript_6FileDO(_,self). in file [26746:1-26746:217]\n", - "Starting work on f_30S_20N_5coref10javascript_4File_15getRelativePath(__temp_6,self) :- AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), AllData_S_20N_5coref10javascript_4File(_,_,_,_,self,_), f_32S_20N_5coref10javascript_6FileDO_15getRelativePath(__temp_6,self), TypeCheck_S_20N_5coref10javascript_4File(_,self). in file [24731:1-24731:712]\n", - "Starting work on f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_1,self) :- f_34S_20N_5coref10javascript_8Location_7getFile(__temp,self), f_30S_20N_5coref10javascript_4File_15getRelativePath(__temp_1,__temp), DataConstraintHelper_f_30S_20N_5coref10javascript_4File_7__all__(__temp,_,_,_,_,_,_), TypeCheck_S_20N_5coref10javascript_8Location(_,self). in file [23328:1-23328:427]\n", - "Starting work on AllData_S_20N_5coref10javascript_8SymbolDO([1,1],oid,name,description) :- Load_D_20N_5coref10javascript_12JavascriptDB_Time1_S_20N_5coref10javascript_8SymbolDO(oid,name,description). in file [33010:1-33010:189]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_8SymbolDO(db_id,item) :- AllData_S_20N_5coref10javascript_8SymbolDO(db_id,item,_,_). in file [25188:1-25188:124]\n", - "Starting work on DataConstraintHelper_f_34S_20N_5coref10javascript_8SymbolDO_7__all__(__temp_4,db,__temp_4,__temp_1,__temp_2) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,_,__temp_2), TypeCheck_S_20N_5coref10javascript_8SymbolDO(db,__temp_4), AllData_DBIndex(db). in file [29483:1-29483:591]\n", - "Starting work on DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(__temp_4,db,__temp_2,__temp_1,__temp_4) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,__temp_1,_), AllData_S_20N_5coref10javascript_8SymbolDO(_,__temp_4,_,__temp_2), DataConstraintHelper_f_34S_20N_5coref10javascript_8SymbolDO_7__all__(__temp_4,db,_,_,_), AllData_DBIndex(db). in file [18787:1-18787:579]\n", - "Starting work on AllData_S_20N_5coref10javascript_6Symbol(db_id,description,name,oid) :- DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(_,db_id,description,name,oid). in file [33507:1-33507:177]\n", - "Starting work on TypeCheck_S_20N_5coref10javascript_6Symbol(db_id,item) :- AllData_S_20N_5coref10javascript_6Symbol(db_id,_,_,item). in file [24851:1-24851:120]\n", - "Starting work on f_30S_20N_5coref10javascript_4Node_9getSymbol(__temp_5,__temp_4) :- f_39S_20N_5coref10javascript_12NodeSymbolDO_12getSymbolOid(__temp_5,__temp_4), DataConstraintHelper_f_39S_20N_5coref10javascript_12NodeSymbolDO_7__all__(__temp_4,_,_,_), DataConstraintHelper_f_32S_20N_5coref10javascript_6Symbol_7__all__(__temp_5,_,_,_,_), AllData_S_20N_5coref10javascript_4Node(_,__temp_4). in file [27897:1-27897:631]\n", - "Starting work on f_39S_20N_5coref10javascript_12FunctionLike_9getSymbol(__temp_2,self) :- f_30S_20N_5coref10javascript_4Node_9getSymbol(__temp_2,self), AllData_S_20N_5coref10javascript_12FunctionLike(_,self). in file [26891:1-26891:330]\n", - "Starting work on f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp_2,self) :- f_39S_20N_5coref10javascript_12FunctionLike_9getSymbol(__temp_2,self), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,self). in file [28133:1-28133:372]\n", - "Starting work on f_34S_20N_5coref10javascript_8SymbolDO_14getDescription(__temp,self) :- AllData_S_20N_5coref10javascript_8SymbolDO(_,self,_,__temp), TypeCheck_S_20N_5coref10javascript_8SymbolDO(_,self). in file [29485:1-29485:220]\n", - "Starting work on f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_4,self) :- AllData_S_20N_5coref10javascript_6Symbol(_,_,_,self), AllData_S_20N_5coref10javascript_6Symbol(_,_,_,self), f_34S_20N_5coref10javascript_8SymbolDO_14getDescription(__temp_4,self), TypeCheck_S_20N_5coref10javascript_6Symbol(_,self). in file [18615:1-18615:519]\n", - "Starting work on f_0_10default_db([1,1]). in file [21967:1-21967:64]\n", - "Starting work on f_0_18getACallerFunction(function,__temp_1) :- f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_12getACallSite(__temp,function), f_46S_20N_5coref10javascript_19MayInvokeExpression_20getEnclosingFunction(__temp_1,__temp), f_0_10default_db(__temp_2), DataConstraintHelper_f_46S_20N_5coref10javascript_19MayInvokeExpression_7__all__(__temp,__temp_2,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,__temp_1). in file [30108:1-30108:612]\n", - "Starting work on f_0_21getAnEffectedFunction(function,effectedFunction) :- f_0_18getACallerFunction(function,effectedFunction), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [18333:1-18333:280]\n", - "Starting work on f_0_21getAnEffectedFunction(function,effectedFunction) :- f_0_18getACallerFunction(function,__temp_1), f_0_21getAnEffectedFunction(__temp_1,effectedFunction), f_0_10default_db(__temp), DataConstraintHelper_f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_7__all__(__temp_1,__temp,_), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [18334:1-18334:477]\n", - ".....\n", - "Starting work on f_0_3out(function,__temp_4,__temp_6,__temp_7,__temp_8,effectedFunction,__temp_5,__temp_9,__temp_10,__temp_11) :- f_0_21getAnEffectedFunction(function,effectedFunction), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp,function), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_9getSymbol(__temp_1,effectedFunction), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_2,function), f_50S_20N_5coref10javascript_23FunctionLikeDeclaration_11getLocation(__temp_3,effectedFunction), f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_4,__temp), f_32S_20N_5coref10javascript_6Symbol_14getDescription(__temp_5,__temp_1), f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_6,__temp_2), f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_7,__temp_2), f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_8,__temp_2), f_34S_20N_5coref10javascript_8Location_15getRelativePath(__temp_9,__temp_3), f_34S_20N_5coref10javascript_8Location_18getStartLineNumber(__temp_10,__temp_3), f_34S_20N_5coref10javascript_8Location_16getEndLineNumber(__temp_11,__temp_3), TypeCheck_S_20N_5coref10javascript_8Location(_,__temp_3), TypeCheck_S_20N_5coref10javascript_8Location(_,__temp_2), TypeCheck_S_20N_5coref10javascript_6Symbol(_,__temp_1), TypeCheck_S_20N_5coref10javascript_6Symbol(_,__temp), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,function), AllData_S_20N_5coref10javascript_23FunctionLikeDeclaration(_,effectedFunction). in file [28171:1-28171:1960]\n", - "Starting work on out(function,signature,functionPath,startLine,endLine,effectedFunction,effectedSignature,effectedFunctionPath,effectedStartLine,effectedEndLine) :- f_0_3out(function,signature,functionPath,startLine,endLine,effectedFunction,effectedSignature,effectedFunctionPath,effectedStartLine,effectedEndLine). in file [33918:1-33918:317]\n", - "Total time: 9.64521sec\n", - "2023-11-30 08:06:34,659 INFO: Task /tmp/godel-jupyter-5f14djn0/query.gdl is success, result is NOT-EMPTY, execution time is 15.77s.\n", - "2023-11-30 08:06:34,659 INFO: run success\n", + "2023-12-06 07:51:24,946 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/axios/coref_javascript_src.db size: 20.83 MB\n", + "2023-12-06 07:51:24,947 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-1b0jlan2/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmppjrr74c0.gdl\n", + "2023-12-06 07:51:25,462 INFO: godel-script compile time: 0.52s\n", + "2023-12-06 07:51:25,463 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmppjrr74c0.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/axios --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-1b0jlan2/query.json\n", + "2023-12-06 07:51:42,014 INFO: Task /tmp/godel-jupyter-1b0jlan2/query.gdl is success, result is NOT-EMPTY, execution time is 17.07s.\n", + "2023-12-06 07:51:42,014 INFO: run success\n", "\n", "Total results: 929\n" ] @@ -2576,7 +436,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -2904,7 +764,7 @@ ], "mimetype": "text/rust", "name": "rust", - "version": "0.0.3" + "version": "0.0.4" } }, "nbformat": 4, diff --git a/tutorial/notebook/python_analysis.ipynb b/tutorial/notebook/python_analysis.ipynb index 79d88848..54639896 100644 --- a/tutorial/notebook/python_analysis.ipynb +++ b/tutorial/notebook/python_analysis.ipynb @@ -18,11 +18,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/sparrow-cli/sparrow\n", + "\n" + ] + } + ], "source": [ "!which sparrow" ] @@ -38,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-11-22T08:30:58.387715Z", @@ -47,7 +56,7 @@ }, "outputs": [], "source": [ - "!git clone https://github.com/psf/requests.git" + "!git clone https://github.com/psf/requests.git -q" ] }, { @@ -59,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2023-11-23T03:46:32.220317Z", @@ -68,7 +77,7 @@ }, "outputs": [], "source": [ - "!sparrow database create --source-root requests --data-language-type python --output ./db/requests" + "!sparrow database create --source-root requests --data-language-type python --output ./db/requests --overwrite > /dev/null" ] }, { @@ -91,9 +100,169 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/workspaces/CodeFuse-Query/tutorial/notebook/db/requests\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mSparrow database is set to: /workspaces/CodeFuse-Query/tutorial/notebook/db/requests\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-12-06 07:48:27,223 INFO: sparrow 2.0.0\n", + " will start\n", + "2023-12-06 07:48:27,223 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/requests/coref_python_src.db size: 5.99 MB\n", + "2023-12-06 07:48:27,224 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-9f9aj65w/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmp8tgaooo4.gdl\n", + "2023-12-06 07:48:27,288 INFO: godel-script compile time: 0.06s\n", + "2023-12-06 07:48:27,288 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmp8tgaooo4.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/requests --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-9f9aj65w/query.json\n", + "2023-12-06 07:48:29,410 INFO: Task /tmp/godel-jupyter-9f9aj65w/query.gdl is success, result is NOT-EMPTY, execution time is 2.19s.\n", + "2023-12-06 07:48:29,411 INFO: run success\n", + "\n", + "Total results: 643\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namevaluepathslineeline
0httpbin1tests/conftest.py2627
1get_encodings_from_content1src/requests/utils.py484506
2request1src/requests/api.py1459
3cookiejar_from_dict6src/requests/cookies.py521539
4consume_socket_content4tests/testserver/server.py621
..................
638TestRequests.test_rewind_body_failed_seek.BadF...1tests/test_requests.py19711972
639TestSuperLen.test_super_len_handles_files_rais...1tests/test_utils.py7677
640TestSuperLen.test_super_len_handles_files_rais...1tests/test_utils.py7980
641TestSuperLen.test_super_len_with_no__len__.Len...1tests/test_utils.py133134
642TestRequests.test_custom_redirect_mixin.Custom...4tests/test_requests.py21962204
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%db ./db/requests\n", "// script\n", @@ -144,9 +313,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query result saved to /workspaces/CodeFuse-Query/tutorial/notebook/query.json\n" + ] + } + ], "source": [ "%%save_to ./query.json" ] @@ -162,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2023-11-23T03:54:56.998681Z", @@ -170,7 +347,27 @@ }, "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " name value ... sline eline\n", + "354 RequestEncodingMixin._encode_files 21 ... 137 203\n", + "572 HTTPDigestAuth.build_digest_header 19 ... 126 234\n", + "232 HTTPAdapter.send 19 ... 433 537\n", + "145 PreparedRequest.prepare_body 17 ... 494 570\n", + "142 PreparedRequest.prepare_url 17 ... 409 481\n", + "26 should_bypass_proxies 15 ... 760 818\n", + "345 SessionRedirectMixin.resolve_redirects 15 ... 159 280\n", + "239 HTTPAdapter.cert_verify 14 ... 237 291\n", + "8 super_len 14 ... 133 196\n", + "68 get_netrc_auth 12 ... 199 253\n", + "\n", + "[10 rows x 5 columns]\n" + ] + } + ], "source": [ "%%python\n", "import pandas as pd\n", @@ -206,7 +403,7 @@ ], "mimetype": "text/rust", "name": "rust", - "version": "0.0.3" + "version": "0.0.4" } }, "nbformat": 4, diff --git a/tutorial/notebook/xml_analysis.ipynb b/tutorial/notebook/xml_analysis.ipynb index c81efd2f..e27fce9a 100644 --- a/tutorial/notebook/xml_analysis.ipynb +++ b/tutorial/notebook/xml_analysis.ipynb @@ -18,11 +18,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/sparrow-cli/sparrow\n", + "\n" + ] + } + ], "source": [ "!which sparrow" ] @@ -38,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-11-22T08:30:58.387715Z", @@ -47,7 +56,7 @@ }, "outputs": [], "source": [ - "!git clone https://github.com/sofastack/sofa-boot.git" + "!git clone https://github.com/sofastack/sofa-boot.git -q" ] }, { @@ -59,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2023-11-23T03:46:32.220317Z", @@ -68,7 +77,7 @@ }, "outputs": [], "source": [ - "!sparrow database create --source-root sofa-boot --data-language-type xml --output ./db/sofa-boot" + "!sparrow database create --source-root sofa-boot --data-language-type xml --output ./db/sofa-boot --overwrite > /dev/null" ] }, { @@ -91,9 +100,157 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-boot\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mSparrow database is set to: /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-boot\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-12-06 07:49:13,344 INFO: sparrow 2.0.0\n", + " will start\n", + "2023-12-06 07:49:13,345 INFO: database /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-boot/coref_xml_src.db size: 908.00 KB\n", + "2023-12-06 07:49:13,345 INFO: execute : /sparrow-cli/godel-script/usr/bin/godel /tmp/godel-jupyter-q_z2i2by/query.gdl -p /sparrow-cli/lib-1.0 -o /tmp/tmph3yjtf_3.gdl\n", + "2023-12-06 07:49:13,361 INFO: godel-script compile time: 0.02s\n", + "2023-12-06 07:49:13,362 INFO: execute : /sparrow-cli/godel-1.0/usr/bin/godel /tmp/tmph3yjtf_3.gdl --run-souffle-directly --package-path /sparrow-cli/lib-1.0 --souffle-fact-dir /workspaces/CodeFuse-Query/tutorial/notebook/db/sofa-boot --souffle-output-format json --souffle-output-path /tmp/godel-jupyter-q_z2i2by/query.json\n", + "2023-12-06 07:49:13,678 INFO: Task /tmp/godel-jupyter-q_z2i2by/query.gdl is success, result is NOT-EMPTY, execution time is 0.33s.\n", + "2023-12-06 07:49:13,678 INFO: run success\n", + "\n", + "Total results: 105\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fileNamem1m2m3
0sofa-boot-project/sofa-boot-parent/pom.xmlcom.puppycrawl.tools8.42checkstyle
1sofa-boot-project/sofa-boot-tools/sofa-boot-gr...org.springframework.boot3.1.2spring-boot-gradle-plugin
2sofa-boot-project/sofa-boot-tools/sofa-boot-gr...org.apache.commons1.19commons-compress
3sofa-boot-project/sofa-boot-tools/sofa-boot-gr...io.spring.gradle1.1.0dependency-management-plugin
4sofa-boot-project/sofaboot-dependencies/pom.xmlcom.alipay.sofa${sofa.ark.version}sofa-ark-springboot-starter
...............
100sofa-boot-tests/pom.xmlcom.alipay.sofa${sofa.boot.version}sofa-boot-smoke-tests-boot
101sofa-boot-tests/pom.xmlcom.alipay.sofa${sofa.boot.version}sofa-boot-smoke-tests-ark
102sofa-boot-tests/pom.xmlcom.alipay.sofa${sofa.boot.version}sofa-boot-smoke-tests-runtime
103sofa-boot-tests/pom.xmlcom.alipay.sofa${sofa.boot.version}sofa-boot-smoke-tests-tracer
104sofa-boot-tests/pom.xmlcom.alipay.sofa${sofa.boot.version}sofa-boot-smoke-tests-rpc
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%db ./db/sofa-boot\n", "// script\n", @@ -230,9 +387,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query result saved to /workspaces/CodeFuse-Query/tutorial/notebook/query.csv\n" + ] + } + ], "source": [ "%%save_to ./query.csv" ] @@ -272,7 +437,7 @@ ], "mimetype": "text/rust", "name": "rust", - "version": "0.0.3" + "version": "0.0.4" } }, "nbformat": 4, From 72162ca3351aaaa9d4e7fb9992ac692293802c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Wed, 6 Dec 2023 16:02:35 +0800 Subject: [PATCH 15/29] update explanation about `=` operator --- doc/4_godelscript_language.md | 182 +++++++++++++++++++++++++++------- 1 file changed, 148 insertions(+), 34 deletions(-) diff --git a/doc/4_godelscript_language.md b/doc/4_godelscript_language.md index b2919ec3..885aafb9 100644 --- a/doc/4_godelscript_language.md +++ b/doc/4_godelscript_language.md @@ -21,7 +21,7 @@ GödelScript 编译器主要应用场景为: 1. 面向用户编写简单或复杂查询,提供更便捷的写法,提高编写查询的效率; 2. 提供严格类型检查与类型推导,给予更智能的代码修改提示; -3. 提供严格的 [ungrounded](#ungrounded-error) 检测,避免容易触发的 Soufflé Ungrounded Error; +3. 提供严格的 [ungrounded(未赋值/未绑定)](#ungrounded-error-未赋值未绑定错误) 检测,避免触发 Soufflé Ungrounded Error; 4. Language Server 以及 IDE Extension 支持。 ### 基本程序构成 @@ -105,11 +105,9 @@ GödelScript 采用类 C 语言的注释方式。 #### `main` 函数 -GödelScript 查询脚本可以包含`main`函数,该函数无返回值。 +GödelScript 查询脚本可以包含`main`函数,该函数无返回值。在不实现`main`函数,且没有写 query 声明的情况下,程序不会输出。 -在`main`中可以多次使用`output(...)`来表明要输出多个查询结果。 - -`main`函数只允许使用`output`,其他语句会导致编译错误。 +更多详细内容请看 [`main`函数](#gödelscript-main-函数)。 ```rust fn main() { @@ -118,11 +116,9 @@ fn main() { } ``` -在不实现`main`函数,且没有写 query 声明的情况下,程序不会输出。 - ### 基础类型和编译器内建函数 -GödelScript 包含基础类型`int``string`,`bool`属于基础类型,但是不能作为值存储。 +GödelScript 包含基础类型`int` `string`,`bool`属于基础类型,但是不能作为值存储。 #### `int`类型 native 函数 @@ -204,7 +200,7 @@ GödelScript 包含基础类型`int``string`,`bool`属于基础类型,但是 | to | (self) -> T | 转换到其他类型的 schema,采用 duck type 检测。 | | is | (self) -> bool | 判断是否可以是其他类型的 schema,采用 duck type 检测。如果自身 schema 有主键,则底层只会通过主键判断是否可以是其他类型。 | | key_eq | (self, T) -> bool | 检查两个 schema 实例的主键是否相等。 | -| key_neq | (self, T) -> bool | 检查两个 schema 实例的主键是否**不**相等。 | +| key_neq | (self, T) -> bool | 检查两个 schema 实例的主键是否不等。 | schema native 函数实例: @@ -232,42 +228,101 @@ fn convert() -> *ElementParent { ### 函数 -#### `main` 函数 +#### GödelScript `main` 函数 -在上文中已经提及,该函数是 GödelScript 中唯一不需要声明返回值的函数。 +`main`函数是 GödelScript 中唯一不声明返回值的函数。`main`函数只允许使用`output`,其他语句会导致编译错误;多次使用`output(...)`可以输出多个查询结果,查询结果会分表显示,表名即为`output`中调用的查询函数的函数名。 #### 查询函数 查询函数的返回值类型推荐为`bool`,需要输出查询结果时,需要使用`output()`函数。 +在`output()`中调用的查询函数不再是常规思路中的用传参调用函数。参数列表在此时会变化为输出表的表结构,下面是两个查询函数的应用实例: + +1. 单表`output` + + 单表`output`特指在`main`函数中,只使用一次`output`来输出。 + + ```rust + fn example(a: int, b: string) -> bool {...} + + fn main() { + output(example()) // 此时参数列表变为输出表结构,不需要传参 + } + ``` + + 对应的输出表结构为: + + ```json + [ + {"a": 0, "b": "xxx"}, + {"a": 1, "b": "xxx"} + ] + ``` + +2. 多表`output` + + 多表`output`是指在`main`函数中,使用多次`output`来输出。在这种情况下,输出数据会附带对应的表名。 + + ```rust + fn example0(a: int, b: string) -> bool {...} + fn example1(a: string, b: int) -> bool {...} + + fn main() { + output(example0()) + output(example1()) + } + ``` + + 对应的输出表结构为: + + ```json + { + "example0":[ + {"a": 0, "b": "xxx"}, + {"a": 1, "b": "xxx"} + ], + "example1":[ + {"a": "xxx", "b": 0}, + {"a": "xxx", "b": 1} + ] + } + ``` + +下面是一个比较详细的例子,在这个例子中,我们直接构造了两组数据并输出。在下列代码中,需要注意的是: + +1. GödelScript 中,布尔值可以使用`true`和`false`关键字。 + +2. `=`符号在 GödelScript 中是比较特殊的符号,不能用常规的编程语言的思路来理解。GödelScript 是一种 Datalog 语言。在这里,`=`符号同时具备两种语义,一个是 __赋值__ 一个是 __判等__。详情可看[`=`运算符](#赋值和判等运算符)。 + +3. 在这个例子的条件语句中,`a`和`b`均使用了`=`的赋值语义,因为`int`和`string`类型参数在函数体中被认为是`ungrounded(未赋值/未绑定)`,必须要被赋值才能使用。 + +4. `=`赋值语句的返回值是`true`。 + ```rust -fn myQuery(a: int, b: string) -> bool { - if (a = 1 && b = "hello") { +fn example(a: int, b: string) -> bool { + // = 符号同时具有赋值和比较的功能,取决于此时的左值是否已经“被赋值” + // 这里的 a 和 b 所用的 = 符号均是赋值语义 + if (a = 1 && b = "1") { + // GödelScript 使用关键字 true 和 false 来表示布尔值 return true } - if (...) { - ... + if (a = 2 && b = "2") { + return true } - ... } fn main() { - output(myQuery()) // 这里无需填写传入参数 + output(example()) } ``` -`output()`会根据该函数的参数列表格式来输出表结构。所以在`main`中使用时,`output()`并不需要你提供这个函数的传入参数。对应的输出表结构大致如下: +预期的输出结果应该为: -| a | b | -| --- | --- | -| 1 | "hello" | -| ... | ... | - -GödelScript 使用`true`和`false`关键字来代表返回的`bool`类型结果: - -```rust -return true -return false +```json +[ + {"a": 1, "b": "1"}, + {"a": 2, "b": "2"} +] ``` #### 普通函数 @@ -352,11 +407,70 @@ if (f.getName().contains("util") || f.getName().contains("com")) { 条件可以使用这些逻辑运算符进行连接:`!`取反,`||`或,`&&`与。 -条件中的比较运算符:`>`大于,`<`小于,`>=`大于等于,`<=`小于等于,`=`等于,`!=`不等于。 +条件中的比较运算符:`>`大于,`<`小于,`>=`大于等于,`<=`小于等于,`=`等于或者赋值,`!=`不等于。 常规算术运算可以使用如下运算符:`+`加法,`-`减法/取负,`*`乘法,`/`除法。 -**注意:比较运算符中的**`**=**`**在左侧变量没有被绑定数据时,会执行绑定操作并返回**`**true**`**,类似于赋值操作。** +##### 赋值和判等运算符`=` + +`=`符号在 GödelScript 中具有两种不同的语义:赋值和判等,具体的语义需要分情况进行讨论: + +1. 赋值 + + 赋值一般出现在`int` `string`这类基础类型的变量参数上,这类变量作为函数的参数出现时,一般被认为是未赋值的。而具有这类变量的函数被调用时,传入的参数,实际上是作为筛选条件存在。 + + ```rust + fn example(a: int) -> bool { + // 这里比较反直觉,在过程式语言中,这里通常会被认为是判断 a == 1 + // 但是在 datalog 方言中,datalog 的每个函数实际上都是在算一个中间表 (view) + // 所以这个函数本质上是生成了一个 view,数据为 [{"a": 1}] + return a = 1 // assign a = 1 + } + + fn test() -> bool { + // 这里看似是在通过传参让 a = 2,实际上并不是 + // example() 自己会返回 view: [{"a": 1}] + // 然后通过 a = 2 来约束结果,可以看到,我们这里没有拿到任何结果 + // 所以返回了 false + return example(2) // false + } + ``` + +2. 判等 + + 对于 schema 类型来说,任何一个 schema 背后都有一个全集,所以参数列表中的 schema 类型一般被认为是已经被赋值的。对于已经赋值的变量来说,`=`就是判等操作。 + + ```rust + // 声明 schema + schema A {...} + + // 实现 schema 的成员函数 + impl A { + // 这里定义了 schema A 的全集 + @data_constraint + pub fn __all__() -> *A {...} + } + + fn example(a: A) -> bool { + for(temp in A::__all__()) { + if (a = temp) { + return true + } + } + } + ``` + + 同样,对于中间声明的有初始值的`int`或者`string`,`=`也是判等操作。 + + ```rust + fn example() -> bool { + let (a = 1) { // assign a = 1 + if (a = 1) { // compare a = 1 + return true + } + } + } + ``` #### match 语句 @@ -944,9 +1058,9 @@ fn class_method(className: string, methodName: string, methodSignature: string) } ``` -### Ungrounded Error +### Ungrounded Error: 未赋值/未绑定错误 -GödelScript 会将未与集合绑定的符号判定为`ungrounded`。基本判定规则为: +GödelScript 会将未与数据绑定的符号判定为`ungrounded(未赋值/未绑定)`。基本判定规则为: - 未初始化的/未被使用的/未与集合绑定的符号 - 未被绑定的`int``string`参数 @@ -2086,9 +2200,9 @@ e, p 的笛卡尔积就变成了 e, i 的笛卡尔积,从运算的层面来看 ### 不要滥用`@inline`/必须用`@inline`的优化策略 inline 函数的底层机制是在**调用处展开**,如果该函数不存在大量的 schema 传参,并且在很多位置都被调用,inline 可能会导致**编译结果膨胀且重复计算次数指数级增加**,有时反而不利于减少运行时间。 -如果存在必须要使用 inline 的情况 (比如规避 ungrounded),但是使用之后反而出现运行速度变慢的情况,可以采取将内嵌语句拆分为 predicate 的方式来避免展开导致的编译结果膨胀。 +如果存在必须要使用 inline 的情况 (比如规避`ungrounded`),但是使用之后反而出现运行速度变慢的情况,可以采取将内嵌语句拆分为 predicate 的方式来避免展开导致的编译结果膨胀。 -下面的例子中,`getValueByAttributeNameByDefaultValue`为了避免`attributeName`被识别为 ungrounded 所以标注 inline,后续在 if 分支中添加了一个条件语句,但是导致了执行时间从 3 秒变成 35 秒: +下面的例子中,`getValueByAttributeNameByDefaultValue`为了避免`attributeName`被识别为`ungrounded`所以标注`inline`,后续在 if 分支中添加了一个条件语句,但是导致了执行时间从 3 秒变成 35 秒: ```rust impl XmlElementBase { From f0825e1bf5c460c420baa7d12ae1ffea46a41e30 Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Thu, 7 Dec 2023 19:10:15 +0800 Subject: [PATCH 16/29] Add note for VSCode Dev Containner config --- tutorial/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorial/README.md b/tutorial/README.md index bfac7da8..809f7e59 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -26,6 +26,8 @@ 3. 加载完成后,切换至项目 tutorial/notebook 目录下 4. 选择示例下的 Jupyter Notebook 分析教程,即可开始体验 +**注意**:执行第2步前,需要确保你的 VS Code 预先安装了 Dev Containners 扩展插件(扩展ID:`ms-vscode-remote.remote-containers`)或者 Remote Development 扩展套件(扩展ID:`ms-vscode-remote.vscode-remote-extensionpack`,该套件包含 Dev Containners 扩展)。如何还未安装,你可以在扩展商店通过扩展 ID 进行搜索安装。 + ## Jupyter kernel for CodeFuse-Query 介绍 Jupyter kernel for CodeFuse-Query(以下称 Godel Kernel) 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-Query 相关的交互式功能。该内核提供以下能力: - 支持在 Jupyter Notebook 中编写和执行 Godel 脚本。 From 15c8b180e03f19ce6178a8293bfe1cc40c41d632 Mon Sep 17 00:00:00 2001 From: "chenyingzhuang.cyz" Date: Thu, 7 Dec 2023 20:35:54 +0800 Subject: [PATCH 17/29] fix typo --- tutorial/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorial/README.md b/tutorial/README.md index 809f7e59..1a6f6151 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -26,7 +26,7 @@ 3. 加载完成后,切换至项目 tutorial/notebook 目录下 4. 选择示例下的 Jupyter Notebook 分析教程,即可开始体验 -**注意**:执行第2步前,需要确保你的 VS Code 预先安装了 Dev Containners 扩展插件(扩展ID:`ms-vscode-remote.remote-containers`)或者 Remote Development 扩展套件(扩展ID:`ms-vscode-remote.vscode-remote-extensionpack`,该套件包含 Dev Containners 扩展)。如何还未安装,你可以在扩展商店通过扩展 ID 进行搜索安装。 +**注意**:执行第2步前,需要确保你的 VS Code 预先安装了 Dev Containners 扩展插件(扩展ID:`ms-vscode-remote.remote-containers`)或者 Remote Development 扩展套件(扩展ID:`ms-vscode-remote.vscode-remote-extensionpack`,该套件包含 Dev Containners 扩展)。如果还未安装,你可以在扩展商店通过扩展 ID 进行搜索安装。 ## Jupyter kernel for CodeFuse-Query 介绍 Jupyter kernel for CodeFuse-Query(以下称 Godel Kernel) 是 Jupyter 的一个特定内核,它为 Jupyter 环境提供了与 CodeFuse-Query 相关的交互式功能。该内核提供以下能力: From edec31453accf55244177a3f666f384ffbe8056e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Fri, 8 Dec 2023 17:23:25 +0800 Subject: [PATCH 18/29] add content in doc/4_godelscript_language.md --- doc/4_godelscript_language.md | 91 ++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/doc/4_godelscript_language.md b/doc/4_godelscript_language.md index 885aafb9..916b5800 100644 --- a/doc/4_godelscript_language.md +++ b/doc/4_godelscript_language.md @@ -1,5 +1,31 @@ # GödelScript 查询语言 +## 目录 + +- [GödelScript 基本概念和语法](#gödelscript-基本概念和语法) + - [简介](#简介) + - [基本程序构成](#基本程序构成) + - [基础类型和编译器内建函数](#基础类型和编译器内建函数) + - [函数](#函数) + - [语句](#语句) + - [Schema](#schema) + - [数据库](#数据库) + - [Trait](#trait) + - [Import](#import) + - [Query](#query) + - [Ungrounded Error: 未赋值/未绑定错误](#ungrounded-error-未赋值未绑定错误) +- [查询示例](#查询示例) + - [Java](#java) + - [Python](#python) + - [JavaScript](#javascript) + - [XML](#xml) + - [Go](#go) +- [查询调试和优化技巧](#查询调试和优化技巧) + - [Schema 传参导致笛卡尔积过大](#schema-传参导致笛卡尔积过大) + - [多层 for 导致笛卡尔积过大](#多层-for-导致笛卡尔积过大) + - [不要滥用`@inline`](#不要滥用inline必须用inline的优化策略) +- [在本机使用查询脚本流程](#在本机使用查询脚本流程) + ## GödelScript 基本概念和语法 ### 简介 @@ -30,13 +56,13 @@ GödelScript 编译器主要应用场景为: GödelScript 程序可能包含: -- 模块和符号[引用语句](#import) -- Schema [类型声明](#schema) -- 数据库[类型声明](#数据库) -- Trait [声明](#trait) -- [方法实现](#方法实现) -- 函数[声明和实现](#函数) -- Query [声明](#query) +- [模块和符号引用](#import) +- [Schema 类型声明](#schema) +- [数据库类型声明](#数据库) +- [Trait 声明](#trait) +- [Schema 方法实现](#方法实现) +- [函数声明和实现](#函数) +- [Query 声明](#query) 包含以上所有组成内容的样例: @@ -99,7 +125,6 @@ GödelScript 采用类 C 语言的注释方式。 /* * 1. 多行注释 * 2. 多行注释 -* 3. 多行注释 */ ``` @@ -107,7 +132,7 @@ GödelScript 采用类 C 语言的注释方式。 GödelScript 查询脚本可以包含`main`函数,该函数无返回值。在不实现`main`函数,且没有写 query 声明的情况下,程序不会输出。 -更多详细内容请看 [`main`函数](#gödelscript-main-函数)。 +更多详细内容请看 [main 函数](#gödelscript-main-函数)。 ```rust fn main() { @@ -496,9 +521,9 @@ fn a() -> int { } fn b() -> *int { - yield 1 - yield 2 - yield 3 + yield 1 + yield 2 + yield 3 } ``` @@ -536,9 +561,9 @@ GödelScript 使用如下方式来声明和实现`schema`的相关方法: impl File { // 静态方法 fn f1() -> ... {...} - // 成员方法,第一个参数必须为 self - fn f2(self) -> ... {...} - ... + // 成员方法,第一个参数必须为 self + fn f2(self) -> ... {...} + ... } ``` ##### 静态方法 @@ -678,7 +703,7 @@ schema File { impl File { @data_constraint fn __all__() -> *File {...} - fn getId(self) -> int {...} + fn getId(self) -> int {...} fn staticMethod() -> string {return "File"} } @@ -947,11 +972,11 @@ database MyDB { ```rust query example from - coref::java::Location loc in coref::java::Location(coref::java::JavaDB::load("...")) + coref::java::Location loc in coref::java::Location(coref::java::JavaDB::load("...")) where - ... + ... select - ... + ... ``` - schema 静态方法调用 @@ -971,12 +996,12 @@ Query 用于进行一些简单的查询,编写的 query 一定会被输出, ```rust query 名字 from - 变量名 in 初始值, + 变量名 in 初始值, 变量名 in 初始值, 变量名 in 初始值 where 条件 select 值 as 输出的列名 - 值 as 输出的列名, + 值 as 输出的列名, 值 as 输出的列名, 值 as 输出的列名 ``` @@ -987,7 +1012,7 @@ from 列表中的变量声明无需加上类型标注,编译器会进行自动 ```rust query hello_world from - info in "hello world" + info in "hello world" select info as greeting ``` @@ -1063,14 +1088,14 @@ fn class_method(className: string, methodName: string, methodSignature: string) GödelScript 会将未与数据绑定的符号判定为`ungrounded(未赋值/未绑定)`。基本判定规则为: - 未初始化的/未被使用的/未与集合绑定的符号 - - 未被绑定的`int``string`参数 + - 未被绑定的`int` `string`参数 - 未被使用的 database 类型的参数 - 函数体有语句,但是没有任何返回语句 - 在取非运算块中进行绑定的符号 - 例如 `!(__tmp = 1)`,`__tmp`会被认为是未绑定的 - 在取非运算块中调用 inline 函数或数据构造函数 -#### 未使用的 database/基础类型参数 +#### 1. 未使用的 database/基础类型参数 函数代码块中,如果有一个语句分支没有使用参数中的`database`或者基础类型参数,则一定会导致`ungrounded`: @@ -1091,7 +1116,7 @@ impl XXX { if (self.hasAttribute(attributeName)) { return self.getValueByAttributeName(attributeName) } - if (!self.hasAttribute(attributeName) { + if (!self.hasAttribute(attributeName)) { return "null" } } @@ -1104,7 +1129,7 @@ fn xxx() -> xx { } ``` -#### 函数体有语句的情况下无返回语句 +#### 2. 函数体有语句的情况下无返回语句 GödelScript 允许一个函数体不包含任何语句,即空函数体。但是如果函数体中有其他语句,则 GödelScript 会要求必须有至少一个返回语句,否则就会出现 ungrounded error。 @@ -1118,7 +1143,7 @@ fn test() -> int { } ``` -#### 取非运算块中使用 inline 函数或数据构造函数 +#### 3. 取非运算块中使用 inline 函数或数据构造函数 上文提到了可以通过`@inline`注解来规避 ungrounded error。但是如果在取非运算中使用了含有该注解的函数,则必然会导致 ungrounded error。 @@ -1142,7 +1167,7 @@ if (!check(for_test())) { } ``` -#### 对链式调用的取非运算 +#### 4. 对链式调用的取非运算 GödelScript 未对该情况执行`ungrounded`检测,但是该写法会导致在 Soufflé 中报`ungrounded`错误: @@ -1226,7 +1251,7 @@ fn main() { use coref::java::* fn default_java_db() -> JavaDB { - return JavaDB::load("coref_java_src.db") + return JavaDB::load("coref_java_src.db") } /** @@ -1243,7 +1268,7 @@ fn class_hierarchy(className : string, superClassName : string) -> bool { } fn main() { - output(class_hierarchy()) + output(class_hierarchy()) } ``` @@ -1254,7 +1279,7 @@ fn main() { use coref::java::* fn default_java_db() -> JavaDB { - return JavaDB::load("coref_java_src.db") + return JavaDB::load("coref_java_src.db") } // Find all methods of the class @@ -1268,7 +1293,7 @@ fn methods(className : string, methodName : string) -> bool { } fn main() { - output(methods()) + output(methods()) } ``` @@ -2191,7 +2216,7 @@ fn getByIndex(self) -> Expression { return e } } - } + } } ``` From da20e57dffe8ff8c39cd0cd736ffc0d40754d024 Mon Sep 17 00:00:00 2001 From: Zhou Ang Date: Fri, 8 Dec 2023 18:00:57 +0800 Subject: [PATCH 19/29] [doc] add badge and wechat qr code of 1214. --- README.md | 8 ++++++++ assets/wechat_qrcode_1214.JPG | Bin 0 -> 231850 bytes 2 files changed, 8 insertions(+) create mode 100644 assets/wechat_qrcode_1214.JPG diff --git a/README.md b/README.md index 71326b4a..7c7016aa 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ Open Issues + + Release Download + + + VSCode Plugin +

## 什么是CodeFuse-Query? @@ -139,6 +145,8 @@ CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力: | Swift | N | N | BETA | | Properties | N | N | BETA | +## 联系我们 +![微信用户群图片](./assets/wechat_qrcode_1214.JPG) ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=codefuse-ai/CodeFuse-Query&type=Date)](https://star-history.com/#codefuse-ai/CodeFuse-Query&Date) diff --git a/assets/wechat_qrcode_1214.JPG b/assets/wechat_qrcode_1214.JPG new file mode 100644 index 0000000000000000000000000000000000000000..b7f4990ec0b4fce88256381c03839f30d7c62ece GIT binary patch literal 231850 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%0DCm% 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%0AykU%r7%RNS7ln_BzTWByngCGJi8Y=^C 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 DhE!Ut literal 0 HcmV?d00001 From fccf160e0f0ef49eed8cfab23299a2c939d6badc Mon Sep 17 00:00:00 2001 From: Zhou Ang Date: Fri, 8 Dec 2023 22:16:11 +0800 Subject: [PATCH 20/29] [doc] add vscode badge logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c7016aa..6bc3553b 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Release Download - VSCode Plugin + VSCode Plugin

From 92ae2e0f6537b633d020ba5781e0a1c038b34c10 Mon Sep 17 00:00:00 2001 From: Xunjin ZHENG Date: Wed, 13 Dec 2023 11:21:23 +0800 Subject: [PATCH 21/29] fix cfamily extract error --- cli/extractor/extractor.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cli/extractor/extractor.py b/cli/extractor/extractor.py index 290257dd..205efe6e 100644 --- a/cli/extractor/extractor.py +++ b/cli/extractor/extractor.py @@ -31,11 +31,11 @@ def __init__(self): def cfamily_extractor_cmd(source_root, database, options): - cmd = list() - cmd += [str(Extractor.cfamily_extractor)] - cmd += ["--compile-commands=", str(source_root)] - cmd += ["--output-db-path=", str(database)] - return cmd + return [ + str(Extractor.cfamily_extractor), + f"--compile-commands={source_root}", + f"--output-db-path={database}" + ] def go_extractor_cmd(source_root, database, options): From 4251a1a45c46e10baf93e3f8597f565efd0c6ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Tue, 19 Dec 2023 10:58:43 +0800 Subject: [PATCH 22/29] add index in docs --- doc/1_abstract.md | 6 ++++++ doc/2_introduction.md | 6 ++++++ doc/3_install_and_run.md | 6 ++++++ doc/4_godelscript_language.md | 6 ++++++ doc/5_toolchain.md | 6 ++++++ doc/Gemfile.lock | 1 + doc/index.md | 13 +++++++------ 7 files changed, 38 insertions(+), 6 deletions(-) diff --git a/doc/1_abstract.md b/doc/1_abstract.md index 81f68660..51f8f000 100644 --- a/doc/1_abstract.md +++ b/doc/1_abstract.md @@ -1,3 +1,9 @@ +--- +title: "摘要" +layout: about +nav_order: 2 +--- + 随着大规模软件开发的普及,对可扩展且易于适应的静态代码分析技术的需求正在加大。传统的静态分析工具,如 Clang Static Analyzer (CSA) 或 PMD,在检查编程规则或样式问题方面已经展现出了良好的效果。然而,这些工具通常是为了满足特定的目标而设计的,往往无法满足现代软件开发环境中多变和多元化的需求。这些需求可以涉及服务质量 (QoS)、各种编程语言、不同的算法需求,以及各种性能需求。例如,安全团队可能需要复杂的算法,如上下文敏感的污点分析,来审查较小的代码库,而项目经理可能需要一种相对较轻的算法,例如计算圈复杂度的算法,以在较大的代码库上测量开发人员的生产力。 这些多元化的需求,加上大型组织中常见的计算资源限制,构成了一项重大的挑战。由于传统工具采用的是问题特定的计算方式,往往无法在这种环境中实现扩展。因此,我们推出了 CodeQuery,这是一个专为大规模静态分析设计的集中式数据平台。 在 CodeQuery 的实现中,我们把源代码和分析结果看作数据,把执行过程看作大数据处理,这与传统的以工具为中心的方法有着显著的不同。我们利用大型组织中的常见系统,如数据仓库、MaxCompute 和 Hive 等数据计算设施、OSS 对象存储和 Kubernetes 等灵活计算资源,让 CodeQuery 能够无缝地融入这些系统中。这种方法使 CodeQuery 高度可维护和可扩展,能够支持多元化的需求,并有效应对不断变化的需求。此外,CodeQuery 的开放架构鼓励各种内部系统之间的互操作性,实现了无缝的交互和数据交换。这种集成和交互能力不仅提高了组织内部的自动化程度,也提高了效率,降低了手动错误的可能性。通过打破信息孤岛,推动更互联、更自动化的环境,CodeQuery 显著提高了软件开发过程的整体生产力和效率。 diff --git a/doc/2_introduction.md b/doc/2_introduction.md index bf4141c2..b6bda8ae 100644 --- a/doc/2_introduction.md +++ b/doc/2_introduction.md @@ -1,3 +1,9 @@ +--- +title: "简介" +layout: default +nav_order: 3 +--- + CodeFuse-Query 是一个支持对 **各种编程语言** 进行 **结构化分析** 的 **代码数据平台**。核心思想是利用各种语言解析器将所有代码转化为数据,并将其结构化存储到代码数据库中。通过使用自定义查询语言,按照业务需求进行数据分析。如下图所示: ![image.png](../assets/introduction01.png) diff --git a/doc/3_install_and_run.md b/doc/3_install_and_run.md index 94e5450f..3c3359f1 100644 --- a/doc/3_install_and_run.md +++ b/doc/3_install_and_run.md @@ -1,3 +1,9 @@ +--- +title: "安装、配置、运行" +layout: page +nav_order: 4 +--- + # 安装、配置、运行 ## 硬件和软件要求 diff --git a/doc/4_godelscript_language.md b/doc/4_godelscript_language.md index 5f228b76..3beb5d44 100644 --- a/doc/4_godelscript_language.md +++ b/doc/4_godelscript_language.md @@ -1,3 +1,9 @@ +--- +title: "GödelScript 查询语言" +layout: default +nav_order: 5 +--- + # GödelScript 查询语言 ## GödelScript 基本概念和语法 diff --git a/doc/5_toolchain.md b/doc/5_toolchain.md index 6788c4e7..0c344ec8 100644 --- a/doc/5_toolchain.md +++ b/doc/5_toolchain.md @@ -1,3 +1,9 @@ +--- +title: "开发插件 (VSCode)" +layout: default +nav_order: 6 +--- + # 开发插件(VSCode) ## 安装 diff --git a/doc/Gemfile.lock b/doc/Gemfile.lock index 9ac9a9b5..2ded23cf 100644 --- a/doc/Gemfile.lock +++ b/doc/Gemfile.lock @@ -74,6 +74,7 @@ GEM webrick (1.8.1) PLATFORMS + arm64-darwin-21 arm64-darwin-23 x86_64-linux diff --git a/doc/index.md b/doc/index.md index 12d00830..aab51f7c 100644 --- a/doc/index.md +++ b/doc/index.md @@ -1,10 +1,11 @@ --- title: Home -layout: home +layout: default +nav_order: 1 --- ## 文档 (Documentation) -- [引言](1_abstract.md) -- [概述](2_introduction.md) -- [安装、配置、运行](3_install_and_run.md) -- [Godel查询语言介绍](4_godelscript_language.md) -- [VSCode开发插件](5_toolchain.md) +- [引言](1_abstract.html) +- [概述](2_introduction.html) +- [安装、配置、运行](3_install_and_run.html) +- [GödelScript 查询语言介绍](4_godelscript_language.html) +- [VSCode开发插件](5_toolchain.html) From 5d998aa6afec45e983b0f4e5f095d7022a0448bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Tue, 19 Dec 2023 11:18:52 +0800 Subject: [PATCH 23/29] add coref_library_reference.md --- doc/1_abstract.md | 2 ++ doc/5_toolchain.md | 4 +++- doc/coref_library_reference.md | 38 ++++++++++++++++++++++++++++++++++ doc/index.md | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 doc/coref_library_reference.md diff --git a/doc/1_abstract.md b/doc/1_abstract.md index 51f8f000..6ff6c569 100644 --- a/doc/1_abstract.md +++ b/doc/1_abstract.md @@ -5,9 +5,11 @@ nav_order: 2 --- 随着大规模软件开发的普及,对可扩展且易于适应的静态代码分析技术的需求正在加大。传统的静态分析工具,如 Clang Static Analyzer (CSA) 或 PMD,在检查编程规则或样式问题方面已经展现出了良好的效果。然而,这些工具通常是为了满足特定的目标而设计的,往往无法满足现代软件开发环境中多变和多元化的需求。这些需求可以涉及服务质量 (QoS)、各种编程语言、不同的算法需求,以及各种性能需求。例如,安全团队可能需要复杂的算法,如上下文敏感的污点分析,来审查较小的代码库,而项目经理可能需要一种相对较轻的算法,例如计算圈复杂度的算法,以在较大的代码库上测量开发人员的生产力。 + 这些多元化的需求,加上大型组织中常见的计算资源限制,构成了一项重大的挑战。由于传统工具采用的是问题特定的计算方式,往往无法在这种环境中实现扩展。因此,我们推出了 CodeQuery,这是一个专为大规模静态分析设计的集中式数据平台。 在 CodeQuery 的实现中,我们把源代码和分析结果看作数据,把执行过程看作大数据处理,这与传统的以工具为中心的方法有着显著的不同。我们利用大型组织中的常见系统,如数据仓库、MaxCompute 和 Hive 等数据计算设施、OSS 对象存储和 Kubernetes 等灵活计算资源,让 CodeQuery 能够无缝地融入这些系统中。这种方法使 CodeQuery 高度可维护和可扩展,能够支持多元化的需求,并有效应对不断变化的需求。此外,CodeQuery 的开放架构鼓励各种内部系统之间的互操作性,实现了无缝的交互和数据交换。这种集成和交互能力不仅提高了组织内部的自动化程度,也提高了效率,降低了手动错误的可能性。通过打破信息孤岛,推动更互联、更自动化的环境,CodeQuery 显著提高了软件开发过程的整体生产力和效率。 此外,CodeQuery 的以数据为中心的方法在处理静态源代码分析的领域特定挑战时具有独特的优势。例如,源代码通常是一个高度结构化和互联的数据集,与其他代码和配置文件有强烈的信息和连接。将代码视为数据,CodeQuery 可以巧妙地处理这些问题,这使得它特别适合在大型组织中使用,其中代码库持续但逐步地进行演变,大部分代码在每天进行微小的改动同时保持稳定。 CodeQuery 还支持如基于代码数据的商业智能 (BI) 这类用例,能生成报告和仪表板,协助监控和决策过程。此外,CodeQuery 在分析大型语言模型 (LLM) 的训练数据方面发挥了重要作用,提供了增强这些模型整体效果的深入见解。 + 在当前的静态分析领域,CodeQuery 带来了一种新的范式。它不仅满足了大规模、复杂的代码库分析需求,还能适应不断变化和多元化的静态分析场景。CodeQuery 的以数据为中心的方法,使得其在处理大数据环境中的代码分析问题时具有独特优势。CodeQuery 的设计,旨在解决大规模软件开发环境中的静态分析问题。它能够将源代码和分析结果视作数据,使得其可以灵活地融入大型组织的各种系统中。这种方法不仅可以有效地处理大规模的代码库,还可以应对各种复杂的分析需求,从而使得静态分析工作变得更加高效和准确。 CodeQuery 的特点和优势可以概括为以下几点: diff --git a/doc/5_toolchain.md b/doc/5_toolchain.md index 0c344ec8..f981eb70 100644 --- a/doc/5_toolchain.md +++ b/doc/5_toolchain.md @@ -85,5 +85,7 @@ code --install-extension [扩展vsix文件路径] - `godelScript.libraryDirectoryPath` - 用于指定 GödelScript 的库文件夹路径,默认为空。需要时请替换为 GödelScript 库文件夹绝对路径。 - 如果已经下载 Sparrow CLI ,则库文件夹路径为 `[sparrow cli root]/lib-1.0`。 -# 智能助手 + +# 智能助手 + 待开放,尽情期待! diff --git a/doc/coref_library_reference.md b/doc/coref_library_reference.md new file mode 100644 index 00000000..ada84423 --- /dev/null +++ b/doc/coref_library_reference.md @@ -0,0 +1,38 @@ +--- +title: "COREF Library Reference" +layout: default +nav_order: 7 +has_children: true +--- + +# COREF Library Reference + +## coref::go + +- coref::go [database](./godel-api/go/database.md) +- coref::go [function](./godel-api/go/function.md) +- coref::go [schema](./godel-api/go/schema.md) + +## coref::java + +- coref::java [database](./godel-api/java/database.md) +- coref::java [function](./godel-api/java/function.md) +- coref::java [schema](./godel-api/java/schema.md) + +## coref::javascript + +- coref::javascript [database](./godel-api/javascript/database.md) +- coref::javascript [function](./godel-api/javascript/function.md) +- coref::javascript [schema](./godel-api/javascript/schema.md) + +## coref::python + +- coref::python [database](./godel-api/python/database.md) +- coref::python [function](./godel-api/python/function.md) +- coref::python [schema](./godel-api/python/schema.md) + +## coref::xml + +- coref::xml [database](./godel-api/xml/database.md) +- coref::xml [function](./godel-api/xml/function.md) +- coref::xml [schema](./godel-api/xml/schema.md) \ No newline at end of file diff --git a/doc/index.md b/doc/index.md index aab51f7c..e60bde6b 100644 --- a/doc/index.md +++ b/doc/index.md @@ -9,3 +9,4 @@ nav_order: 1 - [安装、配置、运行](3_install_and_run.html) - [GödelScript 查询语言介绍](4_godelscript_language.html) - [VSCode开发插件](5_toolchain.html) +- [COREF Library Reference](coref_library_reference.html) From 1214a0d7a864ca450b423d0217f811cecfd4cc5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Tue, 19 Dec 2023 14:26:40 +0800 Subject: [PATCH 24/29] add documents build scripts --- doc/coref_library_reference.md | 34 +--- doc/tools/build.py | 15 ++ doc/tools/generate_coref_library.py | 28 +++ doc/tools/generate_markdown.py | 294 ++++++++++++++++++++++++++++ 4 files changed, 342 insertions(+), 29 deletions(-) create mode 100644 doc/tools/build.py create mode 100644 doc/tools/generate_coref_library.py create mode 100644 doc/tools/generate_markdown.py diff --git a/doc/coref_library_reference.md b/doc/coref_library_reference.md index ada84423..fd68a6a5 100644 --- a/doc/coref_library_reference.md +++ b/doc/coref_library_reference.md @@ -7,32 +7,8 @@ has_children: true # COREF Library Reference -## coref::go - -- coref::go [database](./godel-api/go/database.md) -- coref::go [function](./godel-api/go/function.md) -- coref::go [schema](./godel-api/go/schema.md) - -## coref::java - -- coref::java [database](./godel-api/java/database.md) -- coref::java [function](./godel-api/java/function.md) -- coref::java [schema](./godel-api/java/schema.md) - -## coref::javascript - -- coref::javascript [database](./godel-api/javascript/database.md) -- coref::javascript [function](./godel-api/javascript/function.md) -- coref::javascript [schema](./godel-api/javascript/schema.md) - -## coref::python - -- coref::python [database](./godel-api/python/database.md) -- coref::python [function](./godel-api/python/function.md) -- coref::python [schema](./godel-api/python/schema.md) - -## coref::xml - -- coref::xml [database](./godel-api/xml/database.md) -- coref::xml [function](./godel-api/xml/function.md) -- coref::xml [schema](./godel-api/xml/schema.md) \ No newline at end of file +* [coref::go](./godel-api/go/reference.html) +* [coref::java](./godel-api/java/reference.html) +* [coref::javascript](./godel-api/javascript/reference.html) +* [coref::python](./godel-api/python/reference.html) +* [coref::xml](./godel-api/xml/reference.html) diff --git a/doc/tools/build.py b/doc/tools/build.py new file mode 100644 index 00000000..5cfe9f65 --- /dev/null +++ b/doc/tools/build.py @@ -0,0 +1,15 @@ +import subprocess +import sys + +if len(sys.argv) != 2: + print("Usage: python this_file.py godel_script_executable_path") + exit(-1) + +godel_script_executable = sys.argv[1] + +print("Copy ../assets into ./doc/assets") +subprocess.run(["cp", "-r", "../assets", "./"]) +print("Concat coref library from ../language into ./.coref-api-build") +subprocess.run(["python3", "tools/generate_coref_library.py", "../language"]) +print("Generate markdown documents into ./godel-api") +subprocess.run(["python3", "tools/generate_markdown.py", godel_script_executable]) \ No newline at end of file diff --git a/doc/tools/generate_coref_library.py b/doc/tools/generate_coref_library.py new file mode 100644 index 00000000..1fd9ad5c --- /dev/null +++ b/doc/tools/generate_coref_library.py @@ -0,0 +1,28 @@ +import sys +import os + +if len(sys.argv) != 2: + print("Usage: python this_file.py language_library_directory") + exit(-1) + +input_language_dir = sys.argv[1] + +print("Generate library from", input_language_dir) +if not os.path.exists("./.coref-api-build"): + os.mkdir("./.coref-api-build") + +mapper = { + "coref.go.gdl": input_language_dir + "/go/lib", + "coref.java.gdl": input_language_dir + "/java/lib", + "coref.javascript.gdl": input_language_dir + "/javascript/lib", + "coref.python.gdl": input_language_dir + "/python/lib", + "coref.xml.gdl": input_language_dir + "/xml/lib", +} + +for key in mapper.keys(): + output_file = "./.coref-api-build/" + key + result = "" + for root, ignored, files in os.walk(mapper[key]): + for file in files: + result += open(root + "/" + file, "r").read() + "\n" + open(output_file, "w").write(result) \ No newline at end of file diff --git a/doc/tools/generate_markdown.py b/doc/tools/generate_markdown.py new file mode 100644 index 00000000..04919d77 --- /dev/null +++ b/doc/tools/generate_markdown.py @@ -0,0 +1,294 @@ +import subprocess +import json +import os +import sys + +def delete_head_spaces(comment: str) -> str: + if comment.find("//") == 0: + return comment + result = "" + for string in comment.split("\n"): + temp = "" + is_space_flag = True + for ch in string: + if is_space_flag and (ch == ' ' or ch == '\t'): + continue + is_space_flag = False + temp += ch + result += temp + "\n" + if result[-1] == "\n": + return result[:-1] + return result + +def match_schema_comment(comment_list, schema) -> str: + schema_location = schema["location"] + for comment in comment_list: + comment_location = comment["location"] + if comment_location[3] < schema_location[1]-1: + continue + if comment_location[3] > schema_location[1]: + continue + return delete_head_spaces(comment["content"]) + return "" + +def match_comment(comment_list, function) -> str: + function_location = function["location"] + for comment in comment_list: + comment_location = comment["location"] + if comment_location[3] < function_location[1]-1: + continue + if comment_location[3] > function_location[1]: + continue + return delete_head_spaces(comment["content"]) + return "" + +def raw_string(name: str) -> str: + name = name.replace("_", "\\_") + name = name.replace("<", "\\<") + name = name.replace(">", "\\>") + return name + +def dump_type(type_struct): + result = "*" if type_struct["is_set"] == "true" else "" + result += type_struct["name"] + return result + +def dump_function(function): + result = "pub fn " + function["name"] + "(" + for param in function["parameter"]: + result += param["name"] + ": " + result += dump_type(param["type"]) + ", " + if result[-1] == " ": + result = result[:-2] + result += ") -> " + result += dump_type(function["return"]) + ";" + return result + +def dump_function_parameter(function, link_dir = "./schema/", link_db_path = "./database.html") -> str: + basic_type = ["int", "float", "string", "bool"] + result = "" + for param in function["parameter"]: + result += "* Parameter `" + raw_string(param["name"]) + "`: " + if param["type"]["name"] in basic_type: + result += "`" + dump_type(param["type"]) + "`\n" + elif param["type"]["name"] in database_map.keys(): + result += "[`" + dump_type(param["type"]) + "`](" + link_db_path + ")\n" + else: + result += "[`" + dump_type(param["type"]) + "`](" + link_dir + param["type"]["name"] + ".html)\n" + if function["return"]["name"] in basic_type: + result += "* Return `" + dump_type(function["return"]) + "`\n" + elif function["return"]["name"] in database_map.keys(): + result += "* Return [`" + dump_type(function["return"]) + "`](" + link_db_path + ")\n" + else: + result += "* Return [`" + dump_type(function["return"]) + "`](" + link_dir + function["return"]["name"] + ".html)\n" + return result + +database_map = {} +def dump_database(database) -> str: + database_map[database["name"]] = 1 + result = "## " + database["name"] + "\n\n" + for table in database["table"]: + result += "* " + table["name"] + ": " + result += "[*" + table["type"]["name"] + "](./schema/" + table["type"]["name"] + ".html)\n" + return result + +def dump_schema(comment_list, schema) -> str: + result = "---\n" + result += "layout: default\n" + result += "---\n\n" + result += "# " + schema["name"] + "\n\n" + comment_of_schema = match_schema_comment(comment_list, schema) + if len(comment_of_schema) > 0: + result += "```java\n" + comment_of_schema + "\n```\n" + if len(schema["parent"]) > 0: + result += "Inherit from [" + schema["parent"] + "](" + "./" + schema["parent"] + ".html)\n\n" + for field in schema["fields"]: + if field["primary"]=="true": + result += "Primary key: `" + field["name"] + ": " + result += dump_type(field["type"]) + "`\n\n" + break + result += "```typescript\n" + result += "schema " + schema["name"] + if len(schema["parent"]) > 0: + result += " extends " + schema["parent"] + result += " {\n" + for field in schema["fields"]: + result += " " + if field["primary"]=="true": + result += "@primary " + result += field["name"] + ": " + result += dump_type(field["type"]) + ",\n" + if result[-2:] == ",\n": + result = result[:-2] + "\n" + result += "}\n" + result += "```\n" + for method in schema["methods"]: + if method["is_public"]=="false": + continue + if method["name"] in ["is", "to", "key_eq", "key_neq", "to_set"]: + continue + result += "## " + schema["name"] + "::" + raw_string(method["name"]) + "\n\n" + if method["name"] == "__all__": + result += "Data constraint method.\n\n" + comment = match_comment(comment_list, method) + if len(comment) > 0: + result += "```java\n" + comment + "\n```\n" + result += dump_function_parameter(method, "./", "../database.html") + "\n" + result += "```rust\n" + result += dump_function(method) + "\n" + result += "```\n" + return result + +def dfs_visit_schema_hierarchy(schema, schema_list, indent: str) -> str: + result = indent + "* [" + schema["name"] + "](./schema/" + schema["name"] + ".html)\n" + for i in schema_list: + if i["parent"] == schema["name"]: + result += dfs_visit_schema_hierarchy(i, schema_list, indent + " ") + return result + +def dump_schema_tree_view(schema_list) -> str: + root_schema = [] + for schema in schema_list: + if len(schema["parent"]) == 0: + root_schema.append(schema) + result = "" + for i in root_schema: + result += dfs_visit_schema_hierarchy(i, schema_list, "") + return result + +if len(sys.argv) != 2: + print("Usage: python this_file.py godel_script_executable_path") + exit(-1) + +godel_compiler_path = sys.argv[1] +markdown_output_path = "./godel-api" +input_file_directory = "./.coref-api-build" + +dirs = [ + "./godel-api", + "./godel-api/cfamily", + "./godel-api/go", + "./godel-api/java", + "./godel-api/javascript", + "./godel-api/properties", + "./godel-api/python", + "./godel-api/sql", + "./godel-api/xml", + "./godel-api/cfamily/schema", + "./godel-api/go/schema", + "./godel-api/java/schema", + "./godel-api/javascript/schema", + "./godel-api/properties/schema", + "./godel-api/python/schema", + "./godel-api/sql/schema", + "./godel-api/xml/schema" +] +for d in dirs: + if not os.path.exists(d): + os.mkdir(d) + +input_file_list = [] +for (path, dirname, filename) in os.walk(input_file_directory): + for file in filename: + input_file_list.append({"path": path, "name": file}) + +name_mapper = { + "coref.cfamily.gdl": "cfamily", + "coref.go.gdl": "go", + "coref.java.gdl": "java", + "coref.javascript.gdl": "javascript", + "coref.properties.gdl": "properties", + "coref.python.gdl": "python", + "coref.sql.gdl": "sql", + "coref.xml.gdl": "xml" +} + +semantic_dict = {} +for file in input_file_list: + file_full_path = file["path"] + "/" + file["name"] + print("Extract semantic info from " + file_full_path) + result = subprocess.run( + [godel_compiler_path, "--dump-lsp", file_full_path], + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL + ) + if result.returncode!=0: + continue + semantic_dict[file["name"]] = result.stdout.decode("utf-8") + +for file in input_file_list: + file_full_path = file["path"] + "/" + file["name"] + print("Generate markdown for " + file_full_path) + semantic_info = json.loads(semantic_dict[file["name"]]) + comment_list = semantic_info["comments"] + + output_data = "---\n" + output_data += "title: \"coref::" + name_mapper[file["name"]] + "\"\n" + output_data += "layout: default\n" + output_data += "has_children: true\n" + output_data += "parent: \"COREF Library Reference\"\n" + output_data += "---\n" + output_data += "# COREF Library Reference for " + name_mapper[file["name"]] + "\n\n" + output_data += "* coref::" + name_mapper[file["name"]] + " [database](./database.html)\n" + output_data += "* coref::" + name_mapper[file["name"]] + " [function](./function.html)\n" + output_data += "* coref::" + name_mapper[file["name"]] + " [schema](./schema.html)\n" + output_file_path = markdown_output_path + "/" + name_mapper[file["name"]] + "/reference.md" + open(output_file_path, "w").write(output_data) + + output_data = "---\n" + output_data += "title: \"database\"\n" + output_data += "layout: default\n" + output_data += "parent: \"coref::" + name_mapper[file["name"]] + "\"\n" + output_data += "grand_parent: \"COREF Library Reference\"\n" + output_data += "---\n" + output_data += "# Database of " + file["name"] + "\n\n" + database_list = semantic_info["semantic"]["database"] + for database in database_list: + output_data += dump_database(database) + output_file_path = markdown_output_path + "/" + name_mapper[file["name"]] + "/database.md" + print("Generate", output_file_path) + open(output_file_path, "w").write(output_data) + + function_list = semantic_info["semantic"]["function"] + output_data = "---\n" + output_data += "title: \"function\"\n" + output_data += "layout: default\n" + output_data += "parent: \"coref::" + name_mapper[file["name"]] + "\"\n" + output_data += "grand_parent: \"COREF Library Reference\"\n" + output_data += "---\n" + output_data += "# Global Function of " + file["name"] + "\n\n" + for function in function_list: + if len(function["location"][0]) == 0: + continue + if function["is_public"]=="false": + continue + output_data += "## " + function["name"] + "\n\n" + comment = match_comment(comment_list, function) + if len(comment) > 0: + output_data += "```java\n" + comment + "\n```\n" + output_data += dump_function_parameter(function) + "\n" + output_data += "```rust\n" + output_data += dump_function(function) + "\n" + output_data += "```\n" + output_file_path = markdown_output_path + "/" + name_mapper[file["name"]] + "/function.md" + print("Generate", output_file_path) + open(output_file_path, "w").write(output_data) + + schema_list = semantic_info["semantic"]["schema"] + print("Generate schema documents for", file_full_path, ":", len(schema_list)) + for schema in schema_list: + output_data = dump_schema(comment_list, schema) + output_file_path = markdown_output_path + "/" + name_mapper[file["name"]] + "/schema/" + schema["name"] + ".md" + open(output_file_path, "w").write(output_data) + + output_data = "---\n" + output_data += "title: \"schema\"\n" + output_data += "layout: default\n" + output_data += "parent: \"coref::" + name_mapper[file["name"]] + "\"\n" + output_data += "grand_parent: \"COREF Library Reference\"\n" + output_data += "---\n" + output_data += "# Schema of " + file["name"] + "\n\n" + output_data += dump_schema_tree_view(schema_list) + output_file_path = markdown_output_path + "/" + name_mapper[file["name"]] + "/schema.md" + open(output_file_path, "w").write(output_data) + print("Generate schema documents for", file_full_path, ": Done") \ No newline at end of file From 615ec26f5ddcdbf60cc4a7edbd8ce5f5d161fb49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Tue, 19 Dec 2023 15:13:27 +0800 Subject: [PATCH 25/29] coref library reference main document will be generated by script --- doc/1_abstract.md | 6 ------ doc/2_introduction.md | 6 ------ doc/3_install_and_run.md | 6 ------ doc/4_godelscript_language.md | 6 ------ doc/5_toolchain.md | 6 ------ doc/coref_library_reference.md | 14 -------------- doc/index.md | 11 +++++------ doc/tools/generate_markdown.py | 16 ++++++++++++++++ 8 files changed, 21 insertions(+), 50 deletions(-) delete mode 100644 doc/coref_library_reference.md diff --git a/doc/1_abstract.md b/doc/1_abstract.md index 6ff6c569..d21dc424 100644 --- a/doc/1_abstract.md +++ b/doc/1_abstract.md @@ -1,9 +1,3 @@ ---- -title: "摘要" -layout: about -nav_order: 2 ---- - 随着大规模软件开发的普及,对可扩展且易于适应的静态代码分析技术的需求正在加大。传统的静态分析工具,如 Clang Static Analyzer (CSA) 或 PMD,在检查编程规则或样式问题方面已经展现出了良好的效果。然而,这些工具通常是为了满足特定的目标而设计的,往往无法满足现代软件开发环境中多变和多元化的需求。这些需求可以涉及服务质量 (QoS)、各种编程语言、不同的算法需求,以及各种性能需求。例如,安全团队可能需要复杂的算法,如上下文敏感的污点分析,来审查较小的代码库,而项目经理可能需要一种相对较轻的算法,例如计算圈复杂度的算法,以在较大的代码库上测量开发人员的生产力。 这些多元化的需求,加上大型组织中常见的计算资源限制,构成了一项重大的挑战。由于传统工具采用的是问题特定的计算方式,往往无法在这种环境中实现扩展。因此,我们推出了 CodeQuery,这是一个专为大规模静态分析设计的集中式数据平台。 diff --git a/doc/2_introduction.md b/doc/2_introduction.md index b6bda8ae..bf4141c2 100644 --- a/doc/2_introduction.md +++ b/doc/2_introduction.md @@ -1,9 +1,3 @@ ---- -title: "简介" -layout: default -nav_order: 3 ---- - CodeFuse-Query 是一个支持对 **各种编程语言** 进行 **结构化分析** 的 **代码数据平台**。核心思想是利用各种语言解析器将所有代码转化为数据,并将其结构化存储到代码数据库中。通过使用自定义查询语言,按照业务需求进行数据分析。如下图所示: ![image.png](../assets/introduction01.png) diff --git a/doc/3_install_and_run.md b/doc/3_install_and_run.md index 3c3359f1..94e5450f 100644 --- a/doc/3_install_and_run.md +++ b/doc/3_install_and_run.md @@ -1,9 +1,3 @@ ---- -title: "安装、配置、运行" -layout: page -nav_order: 4 ---- - # 安装、配置、运行 ## 硬件和软件要求 diff --git a/doc/4_godelscript_language.md b/doc/4_godelscript_language.md index a789bb59..916b5800 100644 --- a/doc/4_godelscript_language.md +++ b/doc/4_godelscript_language.md @@ -1,9 +1,3 @@ ---- -title: "GödelScript 查询语言" -layout: default -nav_order: 5 ---- - # GödelScript 查询语言 ## 目录 diff --git a/doc/5_toolchain.md b/doc/5_toolchain.md index f981eb70..ef5cd4cc 100644 --- a/doc/5_toolchain.md +++ b/doc/5_toolchain.md @@ -1,9 +1,3 @@ ---- -title: "开发插件 (VSCode)" -layout: default -nav_order: 6 ---- - # 开发插件(VSCode) ## 安装 diff --git a/doc/coref_library_reference.md b/doc/coref_library_reference.md deleted file mode 100644 index fd68a6a5..00000000 --- a/doc/coref_library_reference.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "COREF Library Reference" -layout: default -nav_order: 7 -has_children: true ---- - -# COREF Library Reference - -* [coref::go](./godel-api/go/reference.html) -* [coref::java](./godel-api/java/reference.html) -* [coref::javascript](./godel-api/javascript/reference.html) -* [coref::python](./godel-api/python/reference.html) -* [coref::xml](./godel-api/xml/reference.html) diff --git a/doc/index.md b/doc/index.md index e60bde6b..c6cb84c8 100644 --- a/doc/index.md +++ b/doc/index.md @@ -4,9 +4,8 @@ layout: default nav_order: 1 --- ## 文档 (Documentation) -- [引言](1_abstract.html) -- [概述](2_introduction.html) -- [安装、配置、运行](3_install_and_run.html) -- [GödelScript 查询语言介绍](4_godelscript_language.html) -- [VSCode开发插件](5_toolchain.html) -- [COREF Library Reference](coref_library_reference.html) +- [引言](1_abstract.md) +- [概述](2_introduction.md) +- [安装、配置、运行](3_install_and_run.md) +- [GödelScript 查询语言介绍](4_godelscript_language.md) +- [VSCode开发插件](5_toolchain.md) diff --git a/doc/tools/generate_markdown.py b/doc/tools/generate_markdown.py index 04919d77..d54b3632 100644 --- a/doc/tools/generate_markdown.py +++ b/doc/tools/generate_markdown.py @@ -216,6 +216,22 @@ def dump_schema_tree_view(schema_list) -> str: continue semantic_dict[file["name"]] = result.stdout.decode("utf-8") +def dump_reference_main_doc(): + output_file_path = markdown_output_path + "/coref_library_reference.md" + output_data = "---\n" + output_data += "title: \"COREF Library Reference\"\n" + output_data += "layout: default\n" + output_data += "nav_order: 2\n" + output_data += "has_children: true\n" + output_data += "---\n\n" + output_data += "# COREF Library Reference\n\n" + for file in input_file_list: + output_data += "* [coref::" + name_mapper[file["name"]] + "]" + output_data += "(./" + name_mapper[file["name"]] + "/reference.html)\n" + open(output_file_path, "w").write(output_data) + +dump_reference_main_doc() + for file in input_file_list: file_full_path = file["path"] + "/" + file["name"] print("Generate markdown for " + file_full_path) From f380cf6ed1be695874db0f6b35f6e53bd20ff036 Mon Sep 17 00:00:00 2001 From: yancang Date: Tue, 19 Dec 2023 18:06:10 +0800 Subject: [PATCH 26/29] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=84=E4=B8=AA?= =?UTF-8?q?=E5=BA=93=E4=B8=ADall=E6=96=B9=E6=B3=95=E7=9A=84=E4=BF=AE?= =?UTF-8?q?=E9=A5=B0=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- language/go/lib/CallableExpr.gdl | 2 +- language/go/lib/Comment.gdl | 6 +- language/go/lib/Declaration.gdl | 6 +- language/go/lib/Expression.gdl | 2 +- language/go/lib/Fields.gdl | 2 +- language/go/lib/File.gdl | 4 +- language/go/lib/FileData.gdl | 2 +- language/go/lib/ForStmt.gdl | 2 +- language/go/lib/Function.gdl | 2 +- language/go/lib/Location.gdl | 2 +- language/go/lib/Method.gdl | 2 +- language/go/lib/Mod.gdl | 2 +- language/go/lib/Node.gdl | 2 +- language/go/lib/Packages.gdl | 2 +- language/go/lib/Receiver.gdl | 2 +- language/go/lib/ReternStmt.gdl | 2 +- language/go/lib/SelectorExpr.gdl | 4 +- language/go/lib/SliceExpr.gdl | 2 +- language/go/lib/Spec.gdl | 10 +- language/go/lib/Statement.gdl | 2 +- language/go/lib/Type.gdl | 2 +- language/go/lib/Utils.gdl | 2 +- language/go/lib/VariableUtils.gdl | 2 +- language/go/lib/Variables.gdl | 8 +- language/go/lib/Writable.gdl | 8 +- language/java/lib/Annotation.gdl | 18 +- language/java/lib/Array.gdl | 8 +- language/java/lib/CallGraph.gdl | 28 +- language/java/lib/Class.gdl | 38 +- language/java/lib/CodeMetric.gdl | 2 +- language/java/lib/Container.gdl | 28 +- language/java/lib/DOClass.gdl | 260 ++++++------ language/java/lib/Documentation.gdl | 10 +- language/java/lib/Expression.gdl | 56 +-- language/java/lib/Identifier.gdl | 2 +- language/java/lib/Literal.gdl | 20 +- language/java/lib/Location.gdl | 4 +- language/java/lib/Method.gdl | 10 +- language/java/lib/Modifier.gdl | 4 +- language/java/lib/Parameter.gdl | 6 +- language/java/lib/Parent.gdl | 6 +- language/java/lib/Statement.gdl | 72 ++-- language/java/lib/Type.gdl | 8 +- language/java/lib/token.gdl | 2 +- language/javascript/lib/AlipayMiniProgram.gdl | 20 +- language/javascript/lib/BasicBlock.gdl | 2 +- language/javascript/lib/Class.gdl | 26 +- language/javascript/lib/Comment.gdl | 2 +- language/javascript/lib/Completion.gdl | 2 +- language/javascript/lib/ControlFlowGraph.gdl | 10 +- language/javascript/lib/DOClass.gdl | 104 ++--- language/javascript/lib/DataFlowGraph.gdl | 2 +- language/javascript/lib/Declaration.gdl | 22 +- language/javascript/lib/DefUse.gdl | 12 +- language/javascript/lib/Expression.gdl | 238 +++++------ language/javascript/lib/FileSystem.gdl | 2 +- language/javascript/lib/Function.gdl | 20 +- language/javascript/lib/HeritageClause.gdl | 4 +- .../javascript/lib/ImportOrExportElement.gdl | 18 +- language/javascript/lib/JSX.gdl | 26 +- language/javascript/lib/Location.gdl | 2 +- language/javascript/lib/Modifier.gdl | 26 +- language/javascript/lib/Node.gdl | 2 +- language/javascript/lib/NumberOfLines.gdl | 2 +- language/javascript/lib/ObjectLiteral.gdl | 14 +- language/javascript/lib/Statement.gdl | 86 ++-- language/javascript/lib/Symbol.gdl | 2 +- language/javascript/lib/Template.gdl | 10 +- language/javascript/lib/Token.gdl | 198 +++++----- language/javascript/lib/TopLevel.gdl | 2 +- language/javascript/lib/Type.gdl | 68 ++-- language/python/lib/Alias.gdl | 2 +- language/python/lib/Argument.gdl | 4 +- language/python/lib/Class.gdl | 4 +- language/python/lib/Comprehension.gdl | 2 +- language/python/lib/Container.gdl | 14 +- language/python/lib/DOClass.gdl | 372 +++++++++--------- language/python/lib/Decorator.gdl | 4 +- language/python/lib/Documentation.gdl | 4 +- language/python/lib/Element.gdl | 4 +- language/python/lib/Expression.gdl | 16 +- language/python/lib/Function.gdl | 4 +- language/python/lib/Keyword.gdl | 4 +- language/python/lib/Location.gdl | 4 +- language/python/lib/Metrics.gdl | 6 +- language/python/lib/Scope.gdl | 2 +- language/python/lib/Slice.gdl | 2 +- language/python/lib/Statement.gdl | 32 +- language/python/lib/Withitem.gdl | 2 +- language/xml/lib/DOClass.gdl | 84 ++-- language/xml/lib/Element.gdl | 24 +- 91 files changed, 1093 insertions(+), 1083 deletions(-) diff --git a/language/go/lib/CallableExpr.gdl b/language/go/lib/CallableExpr.gdl index d3029a45..5b129d7c 100644 --- a/language/go/lib/CallableExpr.gdl +++ b/language/go/lib/CallableExpr.gdl @@ -4,7 +4,7 @@ schema CallableExpr extends Expr { impl CallableExpr { @data_constraint @inline - fn __all__(db: GoDB) -> *CallableExpr { + pub fn __all__(db: GoDB) -> *CallableExpr { for (e in Expr(db)) { if (e.isCallorconversionExpr()) { yield CallableExpr { diff --git a/language/go/lib/Comment.gdl b/language/go/lib/Comment.gdl index e5e7f298..d7a2f234 100644 --- a/language/go/lib/Comment.gdl +++ b/language/go/lib/Comment.gdl @@ -4,7 +4,7 @@ schema Comment extends Node { impl Comment { @data_constraint @inline - fn __all__(db: GoDB) -> *Comment { + pub fn __all__(db: GoDB) -> *Comment { for (tmp in Node(db)) { for (c in CommentDO(db)) { if (tmp.key_eq(c)) { @@ -22,7 +22,7 @@ schema CommentGroup extends Node { impl CommentGroup { @data_constraint @inline - fn __all__(db: GoDB) -> *CommentGroup { + pub fn __all__(db: GoDB) -> *CommentGroup { for (tmp in Node(db)) { for (c in CommentGroupDO(db)) { if (tmp.key_eq(c)) { @@ -40,7 +40,7 @@ schema DocComment extends Node { impl DocComment { @data_constraint @inline - fn __all__(db: GoDB) -> *DocComment { + pub fn __all__(db: GoDB) -> *DocComment { for (tmp in Node(db)) { for (d in DocCommentDO(db)) { if (tmp.key_eq(d)) { diff --git a/language/go/lib/Declaration.gdl b/language/go/lib/Declaration.gdl index baa040d9..a74ec680 100644 --- a/language/go/lib/Declaration.gdl +++ b/language/go/lib/Declaration.gdl @@ -4,7 +4,7 @@ schema Decl extends Node { impl Decl { @data_constraint @inline - fn __all__(db: GoDB) -> *Decl { + pub fn __all__(db: GoDB) -> *Decl { for (tmp in Node(db)) { for (d in DeclDO(db)) { if (tmp.key_eq(d)) { @@ -107,7 +107,7 @@ schema ConstDecl extends Decl { impl ConstDecl { @data_constraint @inline - fn __all__(db: GoDB) -> *ConstDecl { + pub fn __all__(db: GoDB) -> *ConstDecl { for (tmp in Decl(db)) { for (d in DeclDO(db)) { if (tmp.key_eq(d)) { @@ -127,7 +127,7 @@ schema VarDecl extends Decl { impl VarDecl { @data_constraint @inline - fn __all__(db: GoDB) -> *VarDecl { + pub fn __all__(db: GoDB) -> *VarDecl { for (tmp in Decl(db)) { for (d in DeclDO(db)) { if (tmp.key_eq(d)) { diff --git a/language/go/lib/Expression.gdl b/language/go/lib/Expression.gdl index 53f16b1b..859f7301 100644 --- a/language/go/lib/Expression.gdl +++ b/language/go/lib/Expression.gdl @@ -4,7 +4,7 @@ schema Expr extends Node { impl Expr { @data_constraint @inline - fn __all__(db: GoDB) -> *Expr { + pub fn __all__(db: GoDB) -> *Expr { for (e in ExprDO(db)) { yield Expr { id : e.oid diff --git a/language/go/lib/Fields.gdl b/language/go/lib/Fields.gdl index 35972257..edc30ed8 100644 --- a/language/go/lib/Fields.gdl +++ b/language/go/lib/Fields.gdl @@ -4,7 +4,7 @@ schema Fields extends Node { impl Fields { @data_constraint @inline - fn __all__(db: GoDB) -> *Fields { + pub fn __all__(db: GoDB) -> *Fields { for (f in FieldsDO(db)) { yield Fields { id : f.oid diff --git a/language/go/lib/File.gdl b/language/go/lib/File.gdl index b14dd6a8..99221ca7 100644 --- a/language/go/lib/File.gdl +++ b/language/go/lib/File.gdl @@ -4,7 +4,7 @@ schema File extends Node { impl File { @data_constraint @inline - fn __all__(db: GoDB) -> *File { + pub fn __all__(db: GoDB) -> *File { for (f in FileDO(db)) { yield File { id : f.oid @@ -112,7 +112,7 @@ schema GoFile extends File { impl GoFile { @data_constraint @inline - fn __all__(db: GoDB) -> *GoFile { + pub fn __all__(db: GoDB) -> *GoFile { for (f in File(db)) { if (f.isGoFile()) { yield GoFile { diff --git a/language/go/lib/FileData.gdl b/language/go/lib/FileData.gdl index c63b49ad..ef3eaf07 100644 --- a/language/go/lib/FileData.gdl +++ b/language/go/lib/FileData.gdl @@ -4,7 +4,7 @@ schema FileData extends FileDataDO { impl FileData { @data_constraint @inline - fn __all__(db: GoDB) -> *FileData { + pub fn __all__(db: GoDB) -> *FileData { for (tmp in FileDataDO(db)) { yield FileData { oid : tmp.oid, diff --git a/language/go/lib/ForStmt.gdl b/language/go/lib/ForStmt.gdl index cb97745e..08ff367d 100644 --- a/language/go/lib/ForStmt.gdl +++ b/language/go/lib/ForStmt.gdl @@ -4,7 +4,7 @@ schema ForStmt extends Statement { impl ForStmt { @data_constraint @inline - fn __all__(db: GoDB) -> *ForStmt { + pub fn __all__(db: GoDB) -> *ForStmt { for (tmp in Statement(db)) { for (s in Statement(db)) { if (tmp = s) { diff --git a/language/go/lib/Function.gdl b/language/go/lib/Function.gdl index 799ee005..d72d1002 100644 --- a/language/go/lib/Function.gdl +++ b/language/go/lib/Function.gdl @@ -4,7 +4,7 @@ schema Function extends Node { impl Function { @data_constraint @inline - fn __all__(db: GoDB) -> *Function { + pub fn __all__(db: GoDB) -> *Function { for (tmp in Node(db)) { for (d in Decl(db)) { if (d.key_eq(tmp)) { diff --git a/language/go/lib/Location.gdl b/language/go/lib/Location.gdl index 6c99be72..9440df31 100644 --- a/language/go/lib/Location.gdl +++ b/language/go/lib/Location.gdl @@ -4,7 +4,7 @@ schema Location extends LocationDO { impl Location { @data_constraint @inline - fn __all__(db: GoDB) -> *Location { + pub fn __all__(db: GoDB) -> *Location { for (tmp in LocationDO(db)) { yield Location { oid : tmp.oid, diff --git a/language/go/lib/Method.gdl b/language/go/lib/Method.gdl index fa3fe3b9..5c8eda84 100644 --- a/language/go/lib/Method.gdl +++ b/language/go/lib/Method.gdl @@ -4,7 +4,7 @@ schema Method extends Function { impl Method { @data_constraint @inline - fn __all__(db: GoDB) -> *Method { + pub fn __all__(db: GoDB) -> *Method { for (f in Function(db)) { if (f.isMethod()) { yield Method { diff --git a/language/go/lib/Mod.gdl b/language/go/lib/Mod.gdl index 0789aa02..0360d748 100644 --- a/language/go/lib/Mod.gdl +++ b/language/go/lib/Mod.gdl @@ -4,7 +4,7 @@ schema Mod extends ModFileDO { impl Mod { @data_constraint @inline - fn __all__(db: GoDB) -> *Mod { + pub fn __all__(db: GoDB) -> *Mod { for (tmp in ModFileDO(db)) { yield Mod { oid : tmp.oid, diff --git a/language/go/lib/Node.gdl b/language/go/lib/Node.gdl index 70b08f1c..b601fb03 100644 --- a/language/go/lib/Node.gdl +++ b/language/go/lib/Node.gdl @@ -4,7 +4,7 @@ schema Node { impl Node { @data_constraint @inline - fn __all__(db: GoDB) -> *Node { + pub fn __all__(db: GoDB) -> *Node { for (d in DeclDO(db)) { yield Node {id : d.oid} } diff --git a/language/go/lib/Packages.gdl b/language/go/lib/Packages.gdl index d18b046d..3648444f 100644 --- a/language/go/lib/Packages.gdl +++ b/language/go/lib/Packages.gdl @@ -4,7 +4,7 @@ schema Pkg extends PkgDO { impl Pkg { @data_constraint @inline - fn __all__(db: GoDB) -> *Pkg { + pub fn __all__(db: GoDB) -> *Pkg { for (tmp in PkgDO(db)) { yield Pkg { oid : tmp.oid, diff --git a/language/go/lib/Receiver.gdl b/language/go/lib/Receiver.gdl index 33c6adef..4f6c226a 100644 --- a/language/go/lib/Receiver.gdl +++ b/language/go/lib/Receiver.gdl @@ -4,7 +4,7 @@ schema Receiver extends Method { impl Receiver { @data_constraint @inline - fn __all__(db: GoDB) -> *Receiver { + pub fn __all__(db: GoDB) -> *Receiver { for (m in Method(db)) { yield Receiver { id : m.id diff --git a/language/go/lib/ReternStmt.gdl b/language/go/lib/ReternStmt.gdl index ba1810dd..f72de178 100644 --- a/language/go/lib/ReternStmt.gdl +++ b/language/go/lib/ReternStmt.gdl @@ -4,7 +4,7 @@ schema ReturnStmt extends Statement { impl ReturnStmt { @data_constraint @inline - fn __all__(db: GoDB) -> *ReturnStmt { + pub fn __all__(db: GoDB) -> *ReturnStmt { for (s in Statement(db)) { if (s.isReturnStmt()) { yield ReturnStmt { diff --git a/language/go/lib/SelectorExpr.gdl b/language/go/lib/SelectorExpr.gdl index 4a1b0eda..4ed08116 100644 --- a/language/go/lib/SelectorExpr.gdl +++ b/language/go/lib/SelectorExpr.gdl @@ -4,7 +4,7 @@ schema Selector extends Expr { impl Selector { @data_constraint @inline - fn __all__(db: GoDB) -> *Selector { + pub fn __all__(db: GoDB) -> *Selector { for (tmp in Expr(db)) { yield Selector { id : tmp.id @@ -32,7 +32,7 @@ schema SelectorExpr extends Expr { impl SelectorExpr { @data_constraint @inline - fn __all__(db: GoDB) -> *SelectorExpr { + pub fn __all__(db: GoDB) -> *SelectorExpr { for (e in Expr(db)) { if (e.isSelectorExpr()) { yield SelectorExpr { diff --git a/language/go/lib/SliceExpr.gdl b/language/go/lib/SliceExpr.gdl index a77388af..541833a4 100644 --- a/language/go/lib/SliceExpr.gdl +++ b/language/go/lib/SliceExpr.gdl @@ -4,7 +4,7 @@ schema SliceExpr extends Expr { impl SliceExpr { @data_constraint @inline - fn __all__(db: GoDB) -> *SliceExpr { + pub fn __all__(db: GoDB) -> *SliceExpr { for (e in Expr(db)) { if (e.isSliceExpr()) { yield SliceExpr { diff --git a/language/go/lib/Spec.gdl b/language/go/lib/Spec.gdl index 0747a528..99c9e7d7 100644 --- a/language/go/lib/Spec.gdl +++ b/language/go/lib/Spec.gdl @@ -4,7 +4,7 @@ schema Spec extends Node { impl Spec { @data_constraint @inline - fn __all__(db: GoDB) -> *Spec { + pub fn __all__(db: GoDB) -> *Spec { for (s in SpecDO(db)) { yield Spec { id : s.oid @@ -80,7 +80,7 @@ schema ImportSpec extends Spec { impl ImportSpec { @data_constraint @inline - fn __all__(db: GoDB) -> *ImportSpec { + pub fn __all__(db: GoDB) -> *ImportSpec { for (s in Spec(db)) { if (s.isImportSpec()) { yield ImportSpec { @@ -118,7 +118,7 @@ schema TypeSpec extends Spec { impl TypeSpec { @data_constraint @inline - fn __all__(db: GoDB) -> *TypeSpec { + pub fn __all__(db: GoDB) -> *TypeSpec { for (s in Spec(db)) { if (s.isTypedefSpec()) { yield TypeSpec { @@ -145,7 +145,7 @@ schema ValueSpec extends Spec { impl ValueSpec { @data_constraint @inline - fn __all__(db: GoDB) -> *ValueSpec { + pub fn __all__(db: GoDB) -> *ValueSpec { for (s in Spec(db)) { if (s.isValueSpec()) { yield ValueSpec { @@ -239,7 +239,7 @@ schema LocalVaribleDecl extends Decl { impl LocalVaribleDecl { @data_constraint @inline - fn __all__(db: GoDB) -> *LocalVaribleDecl { + pub fn __all__(db: GoDB) -> *LocalVaribleDecl { for (d in Decl(db)) { if (d.isLocalVaribleDecl()) { yield LocalVaribleDecl { diff --git a/language/go/lib/Statement.gdl b/language/go/lib/Statement.gdl index 2a02ec54..bcd4c922 100644 --- a/language/go/lib/Statement.gdl +++ b/language/go/lib/Statement.gdl @@ -4,7 +4,7 @@ schema Statement extends Node { impl Statement { @data_constraint @inline - fn __all__(db: GoDB) -> *Statement { + pub fn __all__(db: GoDB) -> *Statement { for (tmp in Node(db)) { for (s in StmtDO(db)) { if (tmp.key_eq(s)) { diff --git a/language/go/lib/Type.gdl b/language/go/lib/Type.gdl index 4b337e8f..4ad909b9 100644 --- a/language/go/lib/Type.gdl +++ b/language/go/lib/Type.gdl @@ -4,7 +4,7 @@ schema Type extends TypeDO { impl Type { @data_constraint @inline - fn __all__(db: GoDB) -> *Type { + pub fn __all__(db: GoDB) -> *Type { for (tmp in TypeDO(db)) { yield Type { oid : tmp.oid, diff --git a/language/go/lib/Utils.gdl b/language/go/lib/Utils.gdl index 7161cf72..b93bfa3a 100644 --- a/language/go/lib/Utils.gdl +++ b/language/go/lib/Utils.gdl @@ -4,7 +4,7 @@ schema RuntimeInfo extends RuntimeInfoDO { impl RuntimeInfo { @data_constraint @inline - fn __all__(db: GoDB) -> *RuntimeInfo { + pub fn __all__(db: GoDB) -> *RuntimeInfo { for (tmp in RuntimeInfoDO(db)) { yield RuntimeInfo { oid : tmp.oid, diff --git a/language/go/lib/VariableUtils.gdl b/language/go/lib/VariableUtils.gdl index afc16138..a2df119a 100644 --- a/language/go/lib/VariableUtils.gdl +++ b/language/go/lib/VariableUtils.gdl @@ -4,7 +4,7 @@ schema DefineStmt extends Statement { impl DefineStmt { @data_constraint @inline - fn __all__(db: GoDB) -> *DefineStmt { + pub fn __all__(db: GoDB) -> *DefineStmt { for (s in Statement(db)) { if (s.isDefineStmt()) { yield DefineStmt { diff --git a/language/go/lib/Variables.gdl b/language/go/lib/Variables.gdl index b1afee6d..2223bf66 100644 --- a/language/go/lib/Variables.gdl +++ b/language/go/lib/Variables.gdl @@ -4,7 +4,7 @@ schema Literal extends LiteralDO { impl Literal { @data_constraint @inline - fn __all__(db: GoDB) -> *Literal { + pub fn __all__(db: GoDB) -> *Literal { for (tmp in LiteralDO(db)) { yield Literal { oid : tmp.oid, @@ -28,7 +28,7 @@ schema Variables extends Literal { impl Variables { @data_constraint @inline - fn __all__(db: GoDB) -> *Variables { + pub fn __all__(db: GoDB) -> *Variables { for (tmp in Literal(db)) { yield Variables { oid : tmp.oid, @@ -72,7 +72,7 @@ schema IOTALiteral extends Literal { impl IOTALiteral { @data_constraint @inline - fn __all__(db: GoDB) -> *IOTALiteral { + pub fn __all__(db: GoDB) -> *IOTALiteral { for (tmp in Literal(db)) { if (tmp.getValue() = "iota") { yield IOTALiteral { @@ -91,7 +91,7 @@ schema TypeName extends TypeNameDO { impl TypeName { @data_constraint @inline - fn __all__(db: GoDB) -> *TypeName { + pub fn __all__(db: GoDB) -> *TypeName { for (tmp in TypeNameDO(db)) { yield TypeName { oid : tmp.oid, diff --git a/language/go/lib/Writable.gdl b/language/go/lib/Writable.gdl index 44e853a8..0e9255c9 100644 --- a/language/go/lib/Writable.gdl +++ b/language/go/lib/Writable.gdl @@ -4,7 +4,7 @@ schema IncDecStmt extends Statement { impl IncDecStmt { @data_constraint @inline - fn __all__(db: GoDB) -> *IncDecStmt { + pub fn __all__(db: GoDB) -> *IncDecStmt { for (s in Statement(db)) { if (s.isIncStmt()) { yield IncDecStmt { @@ -25,7 +25,7 @@ schema AssignmentStmt extends Statement { impl AssignmentStmt { @data_constraint @inline - fn __all__(db: GoDB) -> *AssignmentStmt { + pub fn __all__(db: GoDB) -> *AssignmentStmt { for (s in Statement(db)) { if (s.isAssignStmt()) { yield AssignmentStmt { @@ -128,7 +128,7 @@ schema Writable extends Node { impl Writable { @data_constraint @inline - fn __all__(db: GoDB) -> *Writable { + pub fn __all__(db: GoDB) -> *Writable { for (n in Node(db)) { for (s in IncDecStmt(db)) { if (s.key_eq(n)) { @@ -178,7 +178,7 @@ schema WritesField { impl WritesField { @data_constraint @inline - fn __all__(db: GoDB) -> *WritesField { + pub fn __all__(db: GoDB) -> *WritesField { for (e in Expr(db)) { if (e.isSelectorExpr()) { yield WritesField {id : e.id} diff --git a/language/java/lib/Annotation.gdl b/language/java/lib/Annotation.gdl index aef22b5f..d547bcad 100644 --- a/language/java/lib/Annotation.gdl +++ b/language/java/lib/Annotation.gdl @@ -7,7 +7,7 @@ schema AnnotatedRelation extends AnnotatedRelationDO { impl AnnotatedRelation { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotatedRelation { + pub fn __all__(db: JavaDB) -> *AnnotatedRelation { for (tmp in AnnotatedRelationDO(db)) { yield AnnotatedRelation { annotation_hash_id : tmp.annotation_hash_id, @@ -44,7 +44,7 @@ schema AnnotationDo { impl AnnotationDo { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDo { + pub fn __all__(db: JavaDB) -> *AnnotationDo { for (a in AnnotationCanResolvedDO(db)) { yield AnnotationDo {id : a.element_hash_id} } @@ -177,7 +177,7 @@ schema Annotation extends AnnotationDo { impl Annotation { @data_constraint @inline - fn __all__(db: JavaDB) -> *Annotation { + pub fn __all__(db: JavaDB) -> *Annotation { for (tmp in AnnotationDo(db)) { yield Annotation { id : tmp.id @@ -233,7 +233,7 @@ schema AnnotationAccessArgumentDO { impl AnnotationAccessArgumentDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationAccessArgumentDO { + pub fn __all__(db: JavaDB) -> *AnnotationAccessArgumentDO { for (a in AnnotationAccessArgumentWithNameDO(db)) { yield AnnotationAccessArgumentDO {id : a.element_hash_id} } @@ -379,7 +379,7 @@ schema AnnotationAccessArgument extends AnnotationAccessArgumentDO { impl AnnotationAccessArgument { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationAccessArgument { + pub fn __all__(db: JavaDB) -> *AnnotationAccessArgument { for (tmp in AnnotationAccessArgumentDO(db)) { yield AnnotationAccessArgument { id : tmp.id @@ -524,7 +524,7 @@ schema AnnotationArrayInitializer extends AnnotationArrayInitializerDO { impl AnnotationArrayInitializer { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationArrayInitializer { + pub fn __all__(db: JavaDB) -> *AnnotationArrayInitializer { for (tmp in AnnotationArrayInitializerDO(db)) { yield AnnotationArrayInitializer { element_hash_id : tmp.element_hash_id, @@ -588,7 +588,7 @@ schema AnnotationDeclaration extends AnnotationDeclarationDO { impl AnnotationDeclaration { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclaration { + pub fn __all__(db: JavaDB) -> *AnnotationDeclaration { for (tmp in AnnotationDeclarationDO(db)) { yield AnnotationDeclaration { element_hash_id : tmp.element_hash_id, @@ -631,7 +631,7 @@ schema AnnotationDeclarationParameter extends AnnotationDeclarationParameterDO { impl AnnotationDeclarationParameter { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclarationParameter { + pub fn __all__(db: JavaDB) -> *AnnotationDeclarationParameter { for (tmp in AnnotationDeclarationParameterDO(db)) { yield AnnotationDeclarationParameter { element_hash_id : tmp.element_hash_id, @@ -697,7 +697,7 @@ schema AnnotationDeclarationParameterDefaultValue extends AnnotationDeclarationP impl AnnotationDeclarationParameterDefaultValue { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDefaultValue { + pub fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDefaultValue { for (tmp in AnnotationDeclarationParameterDefaultValueDO(db)) { yield AnnotationDeclarationParameterDefaultValue { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Array.gdl b/language/java/lib/Array.gdl index ea07a194..8d1a08a0 100644 --- a/language/java/lib/Array.gdl +++ b/language/java/lib/Array.gdl @@ -14,7 +14,7 @@ schema ArrayCreationExpression extends Expression { impl ArrayCreationExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayCreationExpression { + pub fn __all__(db: JavaDB) -> *ArrayCreationExpression { for (tmp in Expression(db)) { for (ace in ArrayCreationExpressionDO(db)) { if (tmp.key_eq(ace)) { @@ -123,7 +123,7 @@ schema ArrayInitializerExpression extends Expression { impl ArrayInitializerExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayInitializerExpression { + pub fn __all__(db: JavaDB) -> *ArrayInitializerExpression { for (tmp in Expression(db)) { for (e in ArrayInitializerExpressionDO(db)) { if (tmp.key_eq(e)) { @@ -193,7 +193,7 @@ schema ArrayAccessExpression extends Expression { impl ArrayAccessExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayAccessExpression { + pub fn __all__(db: JavaDB) -> *ArrayAccessExpression { for (tmp in Expression(db)) { for (aae in ArrayAccessExpressionDO(db)) { if (tmp.key_eq(aae)) { @@ -248,7 +248,7 @@ schema Array extends ArrayDO { impl Array { @data_constraint @inline - fn __all__(db: JavaDB) -> *Array { + pub fn __all__(db: JavaDB) -> *Array { for (tmp in ArrayDO(db)) { yield Array { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/CallGraph.gdl b/language/java/lib/CallGraph.gdl index b650f738..61a394db 100644 --- a/language/java/lib/CallGraph.gdl +++ b/language/java/lib/CallGraph.gdl @@ -7,7 +7,7 @@ schema CallExpression extends Expression { impl CallExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallExpression { + pub fn __all__(db: JavaDB) -> *CallExpression { for (tmp in Expression(db)) { for (m in MethodAccessExpression(db)) { if (tmp.key_eq(m)) { @@ -144,7 +144,7 @@ schema LombokField extends Field { impl LombokField { @data_constraint @inline - fn __all__(db: JavaDB) -> *LombokField { + pub fn __all__(db: JavaDB) -> *LombokField { for (tmp in Field(db)) { for (a in Annotation(db)) { for (auto_tmp2 in tmp.getAnnotation()) { @@ -246,7 +246,7 @@ schema CallableBinding extends CallableBindingDO { impl CallableBinding { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableBinding { + pub fn __all__(db: JavaDB) -> *CallableBinding { for (tmp in CallableBindingDO(db)) { yield CallableBinding { caller_hash_id : tmp.caller_hash_id, @@ -282,7 +282,7 @@ schema ExpressionList extends ExpressionListDO { impl ExpressionList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionList { + pub fn __all__(db: JavaDB) -> *ExpressionList { for (tmp in ExpressionListDO(db)) { yield ExpressionList { element_hash_id : tmp.element_hash_id, @@ -341,7 +341,7 @@ schema ExpressionListExpressionRelation extends ExpressionListExpressionRelation impl ExpressionListExpressionRelation { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionListExpressionRelation { + pub fn __all__(db: JavaDB) -> *ExpressionListExpressionRelation { for (tmp in ExpressionListExpressionRelationDO(db)) { yield ExpressionListExpressionRelation { expression_list_hash_id : tmp.expression_list_hash_id, @@ -370,7 +370,7 @@ schema Callable { impl Callable { @data_constraint @inline - fn __all__(db: JavaDB) -> *Callable { + pub fn __all__(db: JavaDB) -> *Callable { for (m in Method(db)) { yield Callable {id : m.element_hash_id} } @@ -664,7 +664,7 @@ impl Callable { } for (tmp in Method(__all_data__)) { if (self.key_eq(tmp)) { - if (output4(n, tmp)) { + if (getCallerByMatchingCallsiteName(n, tmp)) { yield poly } } @@ -749,7 +749,7 @@ impl Callable { } for (tmp in Method(__all_data__)) { if (tmp.element_hash_id = c.id) { - if (output3(n, tmp)) { + if (getCallerByMatchingCallsiteName(n, tmp)) { yield c } } @@ -838,7 +838,7 @@ schema CallableEnclosingExpression extends CallableEnclosingExpressionDO { impl CallableEnclosingExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableEnclosingExpression { + pub fn __all__(db: JavaDB) -> *CallableEnclosingExpression { for (tmp in CallableEnclosingExpressionDO(db)) { yield CallableEnclosingExpression { expression_hash_id : tmp.expression_hash_id, @@ -874,7 +874,7 @@ schema ReferenceElement extends ReferenceElementDO { impl ReferenceElement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceElement { + pub fn __all__(db: JavaDB) -> *ReferenceElement { for (tmp in ReferenceElementDO(db)) { yield ReferenceElement { element_hash_id : tmp.element_hash_id, @@ -934,7 +934,7 @@ schema AnonymousMethod extends Callable { impl AnonymousMethod { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnonymousMethod { + pub fn __all__(db: JavaDB) -> *AnonymousMethod { for (tmp in Callable(db)) { for (c in AnonymousClass(db)) { if (c.key_eq(tmp.getBelongedClass())) { @@ -984,9 +984,7 @@ pub fn isDirectCall(e : CallExpression) -> bool { } } } -pub fn output4(m : MethodAccessExpression, mm : Method) -> bool { - return output3(m, mm) -} + pub fn isAnonymousMethod(c : Callable) -> bool { for (m in AnonymousMethod(__all_data__)) { if (m.key_eq(c)) { @@ -994,7 +992,7 @@ pub fn isAnonymousMethod(c : Callable) -> bool { } } } -pub fn output3(m: MethodAccessExpression, tmp: Method) -> bool { +pub fn getCallerByMatchingCallsiteName(m: MethodAccessExpression, tmp: Method) -> bool { let (temp3 = tmp_deal_txt(m.getPrintableText())) { if (tmp.getName() = temp3.get_regex_match_result(".*\\.+(\\w+).*", 1)) { let (c = tmp.getBelongedClass()) { diff --git a/language/java/lib/Class.gdl b/language/java/lib/Class.gdl index a83f0b14..4c7f4d47 100644 --- a/language/java/lib/Class.gdl +++ b/language/java/lib/Class.gdl @@ -7,7 +7,7 @@ schema Class extends ClassDO { impl Class { @data_constraint @inline - fn __all__(db: JavaDB) -> *Class { + pub fn __all__(db: JavaDB) -> *Class { for (tmp in ClassDO(db)) { yield Class { element_hash_id : tmp.element_hash_id, @@ -226,7 +226,7 @@ schema ClassImplementList extends ClassImplementListDO { impl ClassImplementList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassImplementList { + pub fn __all__(db: JavaDB) -> *ClassImplementList { for (tmp in ClassImplementListDO(db)) { yield ClassImplementList { element_hash_id : tmp.element_hash_id, @@ -255,7 +255,7 @@ schema Constructor extends ConstructorDO { impl Constructor { @data_constraint @inline - fn __all__(db: JavaDB) -> *Constructor { + pub fn __all__(db: JavaDB) -> *Constructor { for (tmp in ConstructorDO(db)) { yield Constructor { element_hash_id : tmp.element_hash_id, @@ -409,7 +409,7 @@ schema ClassHierarchy extends ClassHierarchyDO { impl ClassHierarchy { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassHierarchy { + pub fn __all__(db: JavaDB) -> *ClassHierarchy { for (tmp in ClassHierarchyDO(db)) { yield ClassHierarchy { child_hash_id : tmp.child_hash_id, @@ -449,7 +449,7 @@ schema Field extends FieldDO { impl Field { @data_constraint @inline - fn __all__(db: JavaDB) -> *Field { + pub fn __all__(db: JavaDB) -> *Field { for (tmp in FieldDO(db)) { yield Field { element_hash_id : tmp.element_hash_id, @@ -596,7 +596,7 @@ schema Interface extends InterfaceDO { impl Interface { @data_constraint @inline - fn __all__(db: JavaDB) -> *Interface { + pub fn __all__(db: JavaDB) -> *Interface { for (tmp in InterfaceDO(db)) { yield Interface { element_hash_id : tmp.element_hash_id, @@ -728,7 +728,7 @@ schema ClassOrInterface { impl ClassOrInterface { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassOrInterface { + pub fn __all__(db: JavaDB) -> *ClassOrInterface { for (c in Class(db)) { yield ClassOrInterface {id : c.element_hash_id} } @@ -1068,7 +1068,7 @@ schema ReferenceRelation extends ReferenceRelationDO { impl ReferenceRelation { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceRelation { + pub fn __all__(db: JavaDB) -> *ReferenceRelation { for (tmp in ReferenceRelationDO(db)) { yield ReferenceRelation { reference_element_hash_id : tmp.reference_element_hash_id, @@ -1130,7 +1130,7 @@ schema LocalVariable extends LocalVariableDO { impl LocalVariable { @data_constraint @inline - fn __all__(db: JavaDB) -> *LocalVariable { + pub fn __all__(db: JavaDB) -> *LocalVariable { for (tmp in LocalVariableDO(db)) { yield LocalVariable { element_hash_id : tmp.element_hash_id, @@ -1254,7 +1254,7 @@ schema AnonymousClass extends AnonymousClassDO { impl AnonymousClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnonymousClass { + pub fn __all__(db: JavaDB) -> *AnonymousClass { for (tmp in AnonymousClassDO(db)) { yield AnonymousClass { element_hash_id : tmp.element_hash_id, @@ -1339,7 +1339,7 @@ schema EnumConstant extends EnumConstantDO { impl EnumConstant { @data_constraint @inline - fn __all__(db: JavaDB) -> *EnumConstant { + pub fn __all__(db: JavaDB) -> *EnumConstant { for (tmp in EnumConstantDO(db)) { yield EnumConstant { element_hash_id : tmp.element_hash_id, @@ -1480,7 +1480,7 @@ schema ClassInitializer extends ClassInitializerDO { impl ClassInitializer { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassInitializer { + pub fn __all__(db: JavaDB) -> *ClassInitializer { for (tmp in ClassInitializerDO(db)) { yield ClassInitializer { element_hash_id : tmp.element_hash_id, @@ -1533,7 +1533,7 @@ schema AbstractClass extends Class { impl AbstractClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *AbstractClass { + pub fn __all__(db: JavaDB) -> *AbstractClass { for (tmp in Class(db)) { for (m in Modifier(db)) { for (auto_tmp1 in tmp.getModifier()) { @@ -1562,7 +1562,7 @@ schema EnumClass extends Class { impl EnumClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *EnumClass { + pub fn __all__(db: JavaDB) -> *EnumClass { for (tmp in Class(db)) { for (m in Modifier(db)) { if (tmp.key_eq(m.getParent())) { @@ -1589,7 +1589,7 @@ schema NestedClass extends Class { impl NestedClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *NestedClass { + pub fn __all__(db: JavaDB) -> *NestedClass { for (tmp in Class(db)) { for (c in Class(db)) { if (c.key_eq(tmp.getParent())) { @@ -1614,7 +1614,7 @@ schema StaticNestedClass extends NestedClass { impl StaticNestedClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *StaticNestedClass { + pub fn __all__(db: JavaDB) -> *StaticNestedClass { for (tmp in NestedClass(db)) { for (m in Modifier(db)) { for (auto_tmp2 in tmp.getModifier()) { @@ -1643,7 +1643,7 @@ schema InnerClass extends NestedClass { impl InnerClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *InnerClass { + pub fn __all__(db: JavaDB) -> *InnerClass { for (tmp in NestedClass(db)) { for (c in NestedClass(db)) { if (tmp = c) { @@ -1670,7 +1670,7 @@ schema NpClass extends NpClassDO { impl NpClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpClass { + pub fn __all__(db: JavaDB) -> *NpClass { for (tmp in NpClassDO(db)) { for (c in NpClassDO(db)) { if (tmp = c) { @@ -1705,7 +1705,7 @@ schema NpInterface extends NpInterfaceDO { impl NpInterface { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpInterface { + pub fn __all__(db: JavaDB) -> *NpInterface { for (tmp in NpInterfaceDO(db)) { for (i in NpInterfaceDO(db)) { if (tmp = i) { diff --git a/language/java/lib/CodeMetric.gdl b/language/java/lib/CodeMetric.gdl index c4dc517d..a2b8f848 100644 --- a/language/java/lib/CodeMetric.gdl +++ b/language/java/lib/CodeMetric.gdl @@ -7,7 +7,7 @@ schema MetricCallable extends Callable { impl MetricCallable { @data_constraint @inline - fn __all__(db: JavaDB) -> *MetricCallable { + pub fn __all__(db: JavaDB) -> *MetricCallable { for (tmp in Callable(db)) { yield MetricCallable { id : tmp.id diff --git a/language/java/lib/Container.gdl b/language/java/lib/Container.gdl index ef384d87..e76f1077 100644 --- a/language/java/lib/Container.gdl +++ b/language/java/lib/Container.gdl @@ -7,7 +7,7 @@ schema Program extends ProgramDO { impl Program { @data_constraint @inline - fn __all__(db: JavaDB) -> *Program { + pub fn __all__(db: JavaDB) -> *Program { for (tmp in ProgramDO(db)) { yield Program { program_hash_id : tmp.program_hash_id, @@ -25,7 +25,7 @@ schema File extends FileDO { impl File { @data_constraint @inline - fn __all__(db: JavaDB) -> *File { + pub fn __all__(db: JavaDB) -> *File { for (tmp in FileDO(db)) { yield File { element_hash_id : tmp.element_hash_id, @@ -82,7 +82,7 @@ schema Folder extends FolderDO { impl Folder { @data_constraint @inline - fn __all__(db: JavaDB) -> *Folder { + pub fn __all__(db: JavaDB) -> *Folder { for (tmp in FolderDO(db)) { yield Folder { element_hash_id : tmp.element_hash_id, @@ -137,7 +137,7 @@ schema ContainerParent extends ContainerParentDO { impl ContainerParent { @data_constraint @inline - fn __all__(db: JavaDB) -> *ContainerParent { + pub fn __all__(db: JavaDB) -> *ContainerParent { for (tmp in ContainerParentDO(db)) { yield ContainerParent { child_hash_id : tmp.child_hash_id, @@ -166,7 +166,7 @@ schema Import extends ImportDO { impl Import { @data_constraint @inline - fn __all__(db: JavaDB) -> *Import { + pub fn __all__(db: JavaDB) -> *Import { for (tmp in ImportDO(db)) { yield Import { element_hash_id : tmp.element_hash_id, @@ -258,7 +258,7 @@ schema Package { impl Package { @data_constraint @inline - fn __all__(db: JavaDB) -> *Package { + pub fn __all__(db: JavaDB) -> *Package { for (ps in db.package_statement) { yield Package { id: ps.package_hash_id, @@ -270,7 +270,7 @@ impl Package { * @brief gets the name of the package. * @return string */ - fn getPackageName(self) -> string { + pub fn getPackageName(self) -> string { return self.qualified_name } } @@ -283,7 +283,7 @@ schema Cupackage extends CupackageDO { impl Cupackage { @data_constraint @inline - fn __all__(db: JavaDB) -> *Cupackage { + pub fn __all__(db: JavaDB) -> *Cupackage { for (tmp in CupackageDO(db)) { yield Cupackage { file_hash_id : tmp.file_hash_id, @@ -324,7 +324,7 @@ schema ReferenceParameterList { impl ReferenceParameterList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceParameterList { + pub fn __all__(db: JavaDB) -> *ReferenceParameterList { for (r in ReferenceParameterListDO(db)) { yield ReferenceParameterList {id : r.list_hash_id} } @@ -430,7 +430,7 @@ schema ImportStaticStatement extends ImportStaticStatementDO { impl ImportStaticStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ImportStaticStatement { + pub fn __all__(db: JavaDB) -> *ImportStaticStatement { for (tmp in ImportStaticStatementDO(db)) { yield ImportStaticStatement { element_hash_id : tmp.element_hash_id, @@ -508,7 +508,7 @@ schema ImportStaticReferenceElement extends ImportStaticReferenceElementDO { impl ImportStaticReferenceElement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ImportStaticReferenceElement { + pub fn __all__(db: JavaDB) -> *ImportStaticReferenceElement { for (tmp in ImportStaticReferenceElementDO(db)) { yield ImportStaticReferenceElement { element_hash_id : tmp.element_hash_id, @@ -561,7 +561,7 @@ schema ResourceList extends ResourceListDO { impl ResourceList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ResourceList { + pub fn __all__(db: JavaDB) -> *ResourceList { for (tmp in ResourceListDO(db)) { yield ResourceList { element_hash_id : tmp.element_hash_id, @@ -638,7 +638,7 @@ schema NpProject extends NpProjectDO { impl NpProject { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpProject { + pub fn __all__(db: JavaDB) -> *NpProject { for (tmp in NpProjectDO(db)) { for (np in NpProjectDO(db)) { if (tmp = np) { @@ -661,7 +661,7 @@ schema NpFile extends NpFileDO { impl NpFile { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpFile { + pub fn __all__(db: JavaDB) -> *NpFile { for (tmp in NpFileDO(db)) { for (nf in NpFileDO(db)) { if (tmp = nf) { diff --git a/language/java/lib/DOClass.gdl b/language/java/lib/DOClass.gdl index 2507a907..17a29471 100644 --- a/language/java/lib/DOClass.gdl +++ b/language/java/lib/DOClass.gdl @@ -8,7 +8,7 @@ schema AnnotatedRelationDO { impl AnnotatedRelationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotatedRelationDO { + pub fn __all__(db: JavaDB) -> *AnnotatedRelationDO { for (tmp in db.annotated_relation) { yield AnnotatedRelationDO { annotation_hash_id : tmp.annotation_hash_id, @@ -39,7 +39,7 @@ schema AnnotationAccessArgumentWithNameDO { impl AnnotationAccessArgumentWithNameDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationAccessArgumentWithNameDO { + pub fn __all__(db: JavaDB) -> *AnnotationAccessArgumentWithNameDO { for (tmp in db.annotation_access_argument_with_name) { yield AnnotationAccessArgumentWithNameDO { element_hash_id : tmp.element_hash_id, @@ -109,7 +109,7 @@ schema AnnotationAccessArgumentWithoutNameDO { impl AnnotationAccessArgumentWithoutNameDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationAccessArgumentWithoutNameDO { + pub fn __all__(db: JavaDB) -> *AnnotationAccessArgumentWithoutNameDO { for (tmp in db.annotation_access_argument_without_name) { yield AnnotationAccessArgumentWithoutNameDO { element_hash_id : tmp.element_hash_id, @@ -169,7 +169,7 @@ schema AnnotationArrayInitializerDO { impl AnnotationArrayInitializerDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationArrayInitializerDO { + pub fn __all__(db: JavaDB) -> *AnnotationArrayInitializerDO { for (tmp in db.annotation_array_initializer) { yield AnnotationArrayInitializerDO { element_hash_id : tmp.element_hash_id, @@ -214,7 +214,7 @@ schema AnnotationCanNotResolvedDO { impl AnnotationCanNotResolvedDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationCanNotResolvedDO { + pub fn __all__(db: JavaDB) -> *AnnotationCanNotResolvedDO { for (tmp in db.annotation_can_not_resolved) { yield AnnotationCanNotResolvedDO { element_hash_id : tmp.element_hash_id, @@ -268,7 +268,7 @@ schema AnnotationCanResolvedDO { impl AnnotationCanResolvedDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationCanResolvedDO { + pub fn __all__(db: JavaDB) -> *AnnotationCanResolvedDO { for (tmp in db.annotation_can_resolved) { yield AnnotationCanResolvedDO { element_hash_id : tmp.element_hash_id, @@ -326,7 +326,7 @@ schema AnnotationDeclarationDO { impl AnnotationDeclarationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclarationDO { + pub fn __all__(db: JavaDB) -> *AnnotationDeclarationDO { for (tmp in db.annotation_declaration) { yield AnnotationDeclarationDO { element_hash_id : tmp.element_hash_id, @@ -356,7 +356,7 @@ schema AnnotationDeclarationParameterDO { impl AnnotationDeclarationParameterDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDO { + pub fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDO { for (tmp in db.annotation_declaration_parameter) { yield AnnotationDeclarationParameterDO { element_hash_id : tmp.element_hash_id, @@ -414,7 +414,7 @@ schema AnnotationDeclarationParameterDefaultValueDO { impl AnnotationDeclarationParameterDefaultValueDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDefaultValueDO { + pub fn __all__(db: JavaDB) -> *AnnotationDeclarationParameterDefaultValueDO { for (tmp in db.annotation_declaration_parameter_default_value) { yield AnnotationDeclarationParameterDefaultValueDO { element_hash_id : tmp.element_hash_id, @@ -443,7 +443,7 @@ schema AnonymousClassDO { impl AnonymousClassDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AnonymousClassDO { + pub fn __all__(db: JavaDB) -> *AnonymousClassDO { for (tmp in db.anonymous_class) { yield AnonymousClassDO { element_hash_id : tmp.element_hash_id, @@ -493,7 +493,7 @@ schema ArrayDO { impl ArrayDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayDO { + pub fn __all__(db: JavaDB) -> *ArrayDO { for (tmp in db.array) { yield ArrayDO { element_hash_id : tmp.element_hash_id, @@ -520,7 +520,7 @@ schema ArrayAccessExpressionDO { impl ArrayAccessExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayAccessExpressionDO { + pub fn __all__(db: JavaDB) -> *ArrayAccessExpressionDO { for (tmp in db.array_access_expression) { yield ArrayAccessExpressionDO { element_hash_id : tmp.element_hash_id, @@ -563,7 +563,7 @@ schema ArrayCreationExpressionDO { impl ArrayCreationExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayCreationExpressionDO { + pub fn __all__(db: JavaDB) -> *ArrayCreationExpressionDO { for (tmp in db.array_creation_expression) { yield ArrayCreationExpressionDO { element_hash_id : tmp.element_hash_id, @@ -597,7 +597,7 @@ schema ArrayInitializerExpressionDO { impl ArrayInitializerExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayInitializerExpressionDO { + pub fn __all__(db: JavaDB) -> *ArrayInitializerExpressionDO { for (tmp in db.array_initializer_expression) { yield ArrayInitializerExpressionDO { element_hash_id : tmp.element_hash_id, @@ -624,7 +624,7 @@ schema AssertStatementDO { impl AssertStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AssertStatementDO { + pub fn __all__(db: JavaDB) -> *AssertStatementDO { for (tmp in db.assert_statement) { yield AssertStatementDO { element_hash_id : tmp.element_hash_id, @@ -660,7 +660,7 @@ schema AssignmentExpressionDO { impl AssignmentExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *AssignmentExpressionDO { + pub fn __all__(db: JavaDB) -> *AssignmentExpressionDO { for (tmp in db.assignment_expression) { yield AssignmentExpressionDO { element_hash_id : tmp.element_hash_id, @@ -704,7 +704,7 @@ schema BinaryExpressionDO { impl BinaryExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *BinaryExpressionDO { + pub fn __all__(db: JavaDB) -> *BinaryExpressionDO { for (tmp in db.binary_expression) { yield BinaryExpressionDO { element_hash_id : tmp.element_hash_id, @@ -746,7 +746,7 @@ schema BlockStatementDO { impl BlockStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *BlockStatementDO { + pub fn __all__(db: JavaDB) -> *BlockStatementDO { for (tmp in db.block_statement) { yield BlockStatementDO { element_hash_id : tmp.element_hash_id, @@ -772,7 +772,7 @@ schema BooleanLiteralDO { impl BooleanLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *BooleanLiteralDO { + pub fn __all__(db: JavaDB) -> *BooleanLiteralDO { for (tmp in db.boolean_literal) { yield BooleanLiteralDO { element_hash_id : tmp.element_hash_id, @@ -798,7 +798,7 @@ schema BreakStatementDO { impl BreakStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *BreakStatementDO { + pub fn __all__(db: JavaDB) -> *BreakStatementDO { for (tmp in db.break_statement) { yield BreakStatementDO { element_hash_id : tmp.element_hash_id, @@ -824,7 +824,7 @@ schema CallableBindingDO { impl CallableBindingDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableBindingDO { + pub fn __all__(db: JavaDB) -> *CallableBindingDO { for (tmp in db.callable_binding) { yield CallableBindingDO { caller_hash_id : tmp.caller_hash_id, @@ -850,7 +850,7 @@ schema CallableEnclosingExpressionDO { impl CallableEnclosingExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableEnclosingExpressionDO { + pub fn __all__(db: JavaDB) -> *CallableEnclosingExpressionDO { for (tmp in db.callable_enclosing_expression) { yield CallableEnclosingExpressionDO { expression_hash_id : tmp.expression_hash_id, @@ -876,7 +876,7 @@ schema CallableEnclosingStatementDO { impl CallableEnclosingStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableEnclosingStatementDO { + pub fn __all__(db: JavaDB) -> *CallableEnclosingStatementDO { for (tmp in db.callable_enclosing_statement) { yield CallableEnclosingStatementDO { statement_hash_id : tmp.statement_hash_id, @@ -907,7 +907,7 @@ schema CatchSectionDO { impl CatchSectionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CatchSectionDO { + pub fn __all__(db: JavaDB) -> *CatchSectionDO { for (tmp in db.catch_section) { yield CatchSectionDO { element_hash_id : tmp.element_hash_id, @@ -973,7 +973,7 @@ schema CharacterLiteralDO { impl CharacterLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CharacterLiteralDO { + pub fn __all__(db: JavaDB) -> *CharacterLiteralDO { for (tmp in db.character_literal) { yield CharacterLiteralDO { element_hash_id : tmp.element_hash_id, @@ -1002,7 +1002,7 @@ schema ClassDO { impl ClassDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassDO { + pub fn __all__(db: JavaDB) -> *ClassDO { for (tmp in db.class) { yield ClassDO { element_hash_id : tmp.element_hash_id, @@ -1052,7 +1052,7 @@ schema ClassHierarchyDO { impl ClassHierarchyDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassHierarchyDO { + pub fn __all__(db: JavaDB) -> *ClassHierarchyDO { for (tmp in db.class_hierarchy) { yield ClassHierarchyDO { child_hash_id : tmp.child_hash_id, @@ -1078,7 +1078,7 @@ schema ClassImplementListDO { impl ClassImplementListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassImplementListDO { + pub fn __all__(db: JavaDB) -> *ClassImplementListDO { for (tmp in db.class_implement_list) { yield ClassImplementListDO { element_hash_id : tmp.element_hash_id, @@ -1106,7 +1106,7 @@ schema ClassInitializerDO { impl ClassInitializerDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ClassInitializerDO { + pub fn __all__(db: JavaDB) -> *ClassInitializerDO { for (tmp in db.class_initializer) { yield ClassInitializerDO { element_hash_id : tmp.element_hash_id, @@ -1152,7 +1152,7 @@ schema CodeBlockDO { impl CodeBlockDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CodeBlockDO { + pub fn __all__(db: JavaDB) -> *CodeBlockDO { for (tmp in db.code_block) { yield CodeBlockDO { element_hash_id : tmp.element_hash_id, @@ -1213,7 +1213,7 @@ schema CommentDO { impl CommentDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CommentDO { + pub fn __all__(db: JavaDB) -> *CommentDO { for (tmp in db.comment) { yield CommentDO { element_hash_id : tmp.element_hash_id, @@ -1265,7 +1265,7 @@ schema ConditionalExpressionDO { impl ConditionalExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConditionalExpressionDO { + pub fn __all__(db: JavaDB) -> *ConditionalExpressionDO { for (tmp in db.conditional_expression) { yield ConditionalExpressionDO { element_hash_id : tmp.element_hash_id, @@ -1311,7 +1311,7 @@ schema ConstructorDO { impl ConstructorDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConstructorDO { + pub fn __all__(db: JavaDB) -> *ConstructorDO { for (tmp in db.constructor) { yield ConstructorDO { element_hash_id : tmp.element_hash_id, @@ -1365,7 +1365,7 @@ schema ConstructorInvocationDO { impl ConstructorInvocationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConstructorInvocationDO { + pub fn __all__(db: JavaDB) -> *ConstructorInvocationDO { for (tmp in db.constructor_invocation) { yield ConstructorInvocationDO { element_hash_id : tmp.element_hash_id, @@ -1391,7 +1391,7 @@ schema ContainerParentDO { impl ContainerParentDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ContainerParentDO { + pub fn __all__(db: JavaDB) -> *ContainerParentDO { for (tmp in db.container_parent) { yield ContainerParentDO { child_hash_id : tmp.child_hash_id, @@ -1417,7 +1417,7 @@ schema ContinueStatementDO { impl ContinueStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ContinueStatementDO { + pub fn __all__(db: JavaDB) -> *ContinueStatementDO { for (tmp in db.continue_statement) { yield ContinueStatementDO { element_hash_id : tmp.element_hash_id, @@ -1443,7 +1443,7 @@ schema CupackageDO { impl CupackageDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *CupackageDO { + pub fn __all__(db: JavaDB) -> *CupackageDO { for (tmp in db.cupackage) { yield CupackageDO { file_hash_id : tmp.file_hash_id, @@ -1470,7 +1470,7 @@ schema DeclarationElementDO { impl DeclarationElementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *DeclarationElementDO { + pub fn __all__(db: JavaDB) -> *DeclarationElementDO { for (tmp in db.declaration_element) { yield DeclarationElementDO { element_hash_id : tmp.element_hash_id, @@ -1506,7 +1506,7 @@ schema DoWhileStatementDO { impl DoWhileStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *DoWhileStatementDO { + pub fn __all__(db: JavaDB) -> *DoWhileStatementDO { for (tmp in db.do_while_statement) { yield DoWhileStatementDO { element_hash_id : tmp.element_hash_id, @@ -1548,7 +1548,7 @@ schema DoubleLiteralDO { impl DoubleLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *DoubleLiteralDO { + pub fn __all__(db: JavaDB) -> *DoubleLiteralDO { for (tmp in db.double_literal) { yield DoubleLiteralDO { element_hash_id : tmp.element_hash_id, @@ -1576,7 +1576,7 @@ schema ElementDO { impl ElementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ElementDO { + pub fn __all__(db: JavaDB) -> *ElementDO { for (tmp in db.element) { yield ElementDO { element_hash_id : tmp.element_hash_id, @@ -1620,7 +1620,7 @@ schema EmptyReferenceParameterListDO { impl EmptyReferenceParameterListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *EmptyReferenceParameterListDO { + pub fn __all__(db: JavaDB) -> *EmptyReferenceParameterListDO { for (tmp in db.empty_reference_parameter_list) { yield EmptyReferenceParameterListDO { list_hash_id : tmp.list_hash_id, @@ -1661,7 +1661,7 @@ schema EmptyStatementDO { impl EmptyStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *EmptyStatementDO { + pub fn __all__(db: JavaDB) -> *EmptyStatementDO { for (tmp in db.empty_statement) { yield EmptyStatementDO { element_hash_id : tmp.element_hash_id @@ -1682,7 +1682,7 @@ schema EnumConstantDO { impl EnumConstantDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *EnumConstantDO { + pub fn __all__(db: JavaDB) -> *EnumConstantDO { for (tmp in db.enum_constant) { yield EnumConstantDO { element_hash_id : tmp.element_hash_id, @@ -1734,7 +1734,7 @@ schema ExceptionDO { impl ExceptionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExceptionDO { + pub fn __all__(db: JavaDB) -> *ExceptionDO { for (tmp in db.exception) { yield ExceptionDO { element_hash_id : tmp.element_hash_id, @@ -1780,7 +1780,7 @@ schema ExpressionDO { impl ExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionDO { + pub fn __all__(db: JavaDB) -> *ExpressionDO { for (tmp in db.expression) { yield ExpressionDO { element_hash_id : tmp.element_hash_id, @@ -1841,7 +1841,7 @@ schema ExpressionListDO { impl ExpressionListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionListDO { + pub fn __all__(db: JavaDB) -> *ExpressionListDO { for (tmp in db.expression_list) { yield ExpressionListDO { element_hash_id : tmp.element_hash_id, @@ -1888,7 +1888,7 @@ schema ExpressionListExpressionRelationDO { impl ExpressionListExpressionRelationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionListExpressionRelationDO { + pub fn __all__(db: JavaDB) -> *ExpressionListExpressionRelationDO { for (tmp in db.expression_list_expression_relation) { yield ExpressionListExpressionRelationDO { expression_list_hash_id : tmp.expression_list_hash_id, @@ -1925,7 +1925,7 @@ schema ExpressionStatementDO { impl ExpressionStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionStatementDO { + pub fn __all__(db: JavaDB) -> *ExpressionStatementDO { for (tmp in db.expression_statement) { yield ExpressionStatementDO { element_hash_id : tmp.element_hash_id, @@ -1954,7 +1954,7 @@ schema FieldDO { impl FieldDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FieldDO { + pub fn __all__(db: JavaDB) -> *FieldDO { for (tmp in db.field) { yield FieldDO { element_hash_id : tmp.element_hash_id, @@ -2007,7 +2007,7 @@ schema FileDO { impl FileDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FileDO { + pub fn __all__(db: JavaDB) -> *FileDO { for (tmp in db.file) { yield FileDO { element_hash_id : tmp.element_hash_id, @@ -2057,7 +2057,7 @@ schema FileMd5SumDO { impl FileMd5SumDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FileMd5SumDO { + pub fn __all__(db: JavaDB) -> *FileMd5SumDO { for (tmp in db.file_md5_sum) { yield FileMd5SumDO { file_hash_id : tmp.file_hash_id, @@ -2083,7 +2083,7 @@ schema FileSha256SumDO { impl FileSha256SumDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FileSha256SumDO { + pub fn __all__(db: JavaDB) -> *FileSha256SumDO { for (tmp in db.file_sha256_sum) { yield FileSha256SumDO { file_hash_id : tmp.file_hash_id, @@ -2109,7 +2109,7 @@ schema FloatingPointLiteralDO { impl FloatingPointLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FloatingPointLiteralDO { + pub fn __all__(db: JavaDB) -> *FloatingPointLiteralDO { for (tmp in db.floating_point_literal) { yield FloatingPointLiteralDO { element_hash_id : tmp.element_hash_id, @@ -2137,7 +2137,7 @@ schema FolderDO { impl FolderDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *FolderDO { + pub fn __all__(db: JavaDB) -> *FolderDO { for (tmp in db.folder) { yield FolderDO { element_hash_id : tmp.element_hash_id, @@ -2182,7 +2182,7 @@ schema ForStatementDO { impl ForStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ForStatementDO { + pub fn __all__(db: JavaDB) -> *ForStatementDO { for (tmp in db.for_statement) { yield ForStatementDO { element_hash_id : tmp.element_hash_id, @@ -2234,7 +2234,7 @@ schema ForeachStatementDO { impl ForeachStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ForeachStatementDO { + pub fn __all__(db: JavaDB) -> *ForeachStatementDO { for (tmp in db.foreach_statement) { yield ForeachStatementDO { element_hash_id : tmp.element_hash_id, @@ -2278,7 +2278,7 @@ schema IdentifierDO { impl IdentifierDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *IdentifierDO { + pub fn __all__(db: JavaDB) -> *IdentifierDO { for (tmp in db.identifier) { yield IdentifierDO { element_hash_id : tmp.element_hash_id, @@ -2322,7 +2322,7 @@ schema IfStatementWithElseDO { impl IfStatementWithElseDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *IfStatementWithElseDO { + pub fn __all__(db: JavaDB) -> *IfStatementWithElseDO { for (tmp in db.if_statement_with_else) { yield IfStatementWithElseDO { element_hash_id : tmp.element_hash_id, @@ -2365,7 +2365,7 @@ schema IfStatementWithoutElseDO { impl IfStatementWithoutElseDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *IfStatementWithoutElseDO { + pub fn __all__(db: JavaDB) -> *IfStatementWithoutElseDO { for (tmp in db.if_statement_without_else) { yield IfStatementWithoutElseDO { element_hash_id : tmp.element_hash_id, @@ -2403,7 +2403,7 @@ schema ImportDO { impl ImportDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ImportDO { + pub fn __all__(db: JavaDB) -> *ImportDO { for (tmp in db.import) { yield ImportDO { element_hash_id : tmp.element_hash_id, @@ -2463,7 +2463,7 @@ schema ImportStaticReferenceElementDO { impl ImportStaticReferenceElementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ImportStaticReferenceElementDO { + pub fn __all__(db: JavaDB) -> *ImportStaticReferenceElementDO { for (tmp in db.import_static_reference_element) { yield ImportStaticReferenceElementDO { element_hash_id : tmp.element_hash_id, @@ -2508,7 +2508,7 @@ schema ImportStaticStatementDO { impl ImportStaticStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ImportStaticStatementDO { + pub fn __all__(db: JavaDB) -> *ImportStaticStatementDO { for (tmp in db.import_static_statement) { yield ImportStaticStatementDO { element_hash_id : tmp.element_hash_id, @@ -2560,7 +2560,7 @@ schema InstanceofExpressionDO { impl InstanceofExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *InstanceofExpressionDO { + pub fn __all__(db: JavaDB) -> *InstanceofExpressionDO { for (tmp in db.instanceof_expression) { yield InstanceofExpressionDO { element_hash_id : tmp.element_hash_id, @@ -2602,7 +2602,7 @@ schema IntegerLiteralDO { impl IntegerLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *IntegerLiteralDO { + pub fn __all__(db: JavaDB) -> *IntegerLiteralDO { for (tmp in db.integer_literal) { yield IntegerLiteralDO { element_hash_id : tmp.element_hash_id, @@ -2631,7 +2631,7 @@ schema InterfaceDO { impl InterfaceDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *InterfaceDO { + pub fn __all__(db: JavaDB) -> *InterfaceDO { for (tmp in db.interface) { yield InterfaceDO { element_hash_id : tmp.element_hash_id, @@ -2684,7 +2684,7 @@ schema JavadocCommentDO { impl JavadocCommentDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocCommentDO { + pub fn __all__(db: JavaDB) -> *JavadocCommentDO { for (tmp in db.javadoc_comment) { yield JavadocCommentDO { element_hash_id : tmp.element_hash_id, @@ -2738,7 +2738,7 @@ schema JavadocTagDO { impl JavadocTagDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocTagDO { + pub fn __all__(db: JavaDB) -> *JavadocTagDO { for (tmp in db.javadoc_tag) { yield JavadocTagDO { element_hash_id : tmp.element_hash_id, @@ -2798,7 +2798,7 @@ schema JavadocTagValueDO { impl JavadocTagValueDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocTagValueDO { + pub fn __all__(db: JavaDB) -> *JavadocTagValueDO { for (tmp in db.javadoc_tag_value) { yield JavadocTagValueDO { element_hash_id : tmp.element_hash_id, @@ -2843,7 +2843,7 @@ schema JavadocDataTokenDO { impl JavadocDataTokenDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocDataTokenDO { + pub fn __all__(db: JavaDB) -> *JavadocDataTokenDO { for (tmp in db.javadoc_data_token) { yield JavadocDataTokenDO { element_hash_id : tmp.element_hash_id, @@ -2894,7 +2894,7 @@ schema LabeledStatementDO { impl LabeledStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LabeledStatementDO { + pub fn __all__(db: JavaDB) -> *LabeledStatementDO { for (tmp in db.labeled_statement) { yield LabeledStatementDO { element_hash_id : tmp.element_hash_id, @@ -2931,7 +2931,7 @@ schema LambdaExpressionDO { impl LambdaExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LambdaExpressionDO { + pub fn __all__(db: JavaDB) -> *LambdaExpressionDO { for (tmp in db.lambda_expression) { yield LambdaExpressionDO { element_hash_id : tmp.element_hash_id, @@ -2984,7 +2984,7 @@ schema LocalClassDO { impl LocalClassDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LocalClassDO { + pub fn __all__(db: JavaDB) -> *LocalClassDO { for (tmp in db.local_class) { yield LocalClassDO { element_hash_id : tmp.element_hash_id, @@ -3038,7 +3038,7 @@ schema LocalVariableDO { impl LocalVariableDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LocalVariableDO { + pub fn __all__(db: JavaDB) -> *LocalVariableDO { for (tmp in db.local_variable) { yield LocalVariableDO { element_hash_id : tmp.element_hash_id, @@ -3100,7 +3100,7 @@ schema LocationDO { impl LocationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LocationDO { + pub fn __all__(db: JavaDB) -> *LocationDO { for (tmp in db.location) { yield LocationDO { element_hash_id : tmp.element_hash_id, @@ -3158,7 +3158,7 @@ schema LongLiteralDO { impl LongLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *LongLiteralDO { + pub fn __all__(db: JavaDB) -> *LongLiteralDO { for (tmp in db.long_literal) { yield LongLiteralDO { element_hash_id : tmp.element_hash_id, @@ -3186,7 +3186,7 @@ schema MetainfoDO { impl MetainfoDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *MetainfoDO { + pub fn __all__(db: JavaDB) -> *MetainfoDO { for (tmp in db.metainfo) { yield MetainfoDO { oid : tmp.oid, @@ -3233,7 +3233,7 @@ schema MethodDO { impl MethodDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodDO { + pub fn __all__(db: JavaDB) -> *MethodDO { for (tmp in db.method) { yield MethodDO { element_hash_id : tmp.element_hash_id, @@ -3297,7 +3297,7 @@ schema MethodAccessExpressionWithTypeDO { impl MethodAccessExpressionWithTypeDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodAccessExpressionWithTypeDO { + pub fn __all__(db: JavaDB) -> *MethodAccessExpressionWithTypeDO { for (tmp in db.method_access_expression_with_type) { yield MethodAccessExpressionWithTypeDO { element_hash_id : tmp.element_hash_id, @@ -3340,7 +3340,7 @@ schema MethodAccessExpressionWithoutTypeDO { impl MethodAccessExpressionWithoutTypeDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodAccessExpressionWithoutTypeDO { + pub fn __all__(db: JavaDB) -> *MethodAccessExpressionWithoutTypeDO { for (tmp in db.method_access_expression_without_type) { yield MethodAccessExpressionWithoutTypeDO { element_hash_id : tmp.element_hash_id, @@ -3374,7 +3374,7 @@ schema MethodReferenceExpressionDO { impl MethodReferenceExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodReferenceExpressionDO { + pub fn __all__(db: JavaDB) -> *MethodReferenceExpressionDO { for (tmp in db.method_reference_expression) { yield MethodReferenceExpressionDO { element_hash_id : tmp.element_hash_id, @@ -3402,7 +3402,7 @@ schema ModifierDO { impl ModifierDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ModifierDO { + pub fn __all__(db: JavaDB) -> *ModifierDO { for (tmp in db.modifier) { yield ModifierDO { element_hash_id : tmp.element_hash_id, @@ -3445,7 +3445,7 @@ schema ModifierListDO { impl ModifierListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ModifierListDO { + pub fn __all__(db: JavaDB) -> *ModifierListDO { for (tmp in db.modifier_list) { yield ModifierListDO { element_hash_id : tmp.element_hash_id, @@ -3479,7 +3479,7 @@ schema ModuleDO { impl ModuleDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ModuleDO { + pub fn __all__(db: JavaDB) -> *ModuleDO { for (tmp in db.module) { yield ModuleDO { element_hash_id : tmp.element_hash_id, @@ -3506,7 +3506,7 @@ schema NameStringDO { impl NameStringDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NameStringDO { + pub fn __all__(db: JavaDB) -> *NameStringDO { for (tmp in db.name_string) { yield NameStringDO { parent_hash_id : tmp.parent_hash_id, @@ -3541,7 +3541,7 @@ schema NewExpressionDO { impl NewExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NewExpressionDO { + pub fn __all__(db: JavaDB) -> *NewExpressionDO { for (tmp in db.new_expression) { yield NewExpressionDO { element_hash_id : tmp.element_hash_id, @@ -3575,7 +3575,7 @@ schema NullLiteralDO { impl NullLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NullLiteralDO { + pub fn __all__(db: JavaDB) -> *NullLiteralDO { for (tmp in db.null_literal) { yield NullLiteralDO { element_hash_id : tmp.element_hash_id, @@ -3603,7 +3603,7 @@ schema NumberOfLinesDO { impl NumberOfLinesDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NumberOfLinesDO { + pub fn __all__(db: JavaDB) -> *NumberOfLinesDO { for (tmp in db.number_of_lines) { yield NumberOfLinesDO { element_hash_id : tmp.element_hash_id, @@ -3648,7 +3648,7 @@ schema PackageStatementDO { impl PackageStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *PackageStatementDO { + pub fn __all__(db: JavaDB) -> *PackageStatementDO { for (tmp in db.package_statement) { yield PackageStatementDO { element_hash_id : tmp.element_hash_id, @@ -3703,7 +3703,7 @@ schema ParameterDO { impl ParameterDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ParameterDO { + pub fn __all__(db: JavaDB) -> *ParameterDO { for (tmp in db.parameter) { yield ParameterDO { element_hash_id : tmp.element_hash_id, @@ -3769,7 +3769,7 @@ schema ParentDO { impl ParentDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ParentDO { + pub fn __all__(db: JavaDB) -> *ParentDO { for (tmp in db.parent) { yield ParentDO { parent_hash_id : tmp.parent_hash_id, @@ -3796,7 +3796,7 @@ schema PolyadicExpressionDO { impl PolyadicExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *PolyadicExpressionDO { + pub fn __all__(db: JavaDB) -> *PolyadicExpressionDO { for (tmp in db.polyadic_expression) { yield PolyadicExpressionDO { element_hash_id : tmp.element_hash_id, @@ -3830,7 +3830,7 @@ schema PrimitiveDO { impl PrimitiveDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *PrimitiveDO { + pub fn __all__(db: JavaDB) -> *PrimitiveDO { for (tmp in db.primitive) { yield PrimitiveDO { oid : tmp.oid, @@ -3856,7 +3856,7 @@ schema ProgramDO { impl ProgramDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ProgramDO { + pub fn __all__(db: JavaDB) -> *ProgramDO { for (tmp in db.program) { yield ProgramDO { program_hash_id : tmp.program_hash_id, @@ -3884,7 +3884,7 @@ schema ReferenceElementDO { impl ReferenceElementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceElementDO { + pub fn __all__(db: JavaDB) -> *ReferenceElementDO { for (tmp in db.reference_element) { yield ReferenceElementDO { element_hash_id : tmp.element_hash_id, @@ -3925,7 +3925,7 @@ schema ReferenceExpressionDO { impl ReferenceExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceExpressionDO { + pub fn __all__(db: JavaDB) -> *ReferenceExpressionDO { for (tmp in db.reference_expression) { yield ReferenceExpressionDO { element_hash_id : tmp.element_hash_id @@ -3946,7 +3946,7 @@ schema ReferenceListDO { impl ReferenceListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceListDO { + pub fn __all__(db: JavaDB) -> *ReferenceListDO { for (tmp in db.reference_list) { yield ReferenceListDO { element_hash_id : tmp.element_hash_id, @@ -4000,7 +4000,7 @@ schema ReferenceParameterListDO { impl ReferenceParameterListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceParameterListDO { + pub fn __all__(db: JavaDB) -> *ReferenceParameterListDO { for (tmp in db.reference_parameter_list) { yield ReferenceParameterListDO { type_element_hash_id : tmp.type_element_hash_id, @@ -4065,7 +4065,7 @@ schema ReferenceRelationDO { impl ReferenceRelationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceRelationDO { + pub fn __all__(db: JavaDB) -> *ReferenceRelationDO { for (tmp in db.reference_relation) { yield ReferenceRelationDO { reference_element_hash_id : tmp.reference_element_hash_id, @@ -4099,7 +4099,7 @@ schema ReferenceTypeDO { impl ReferenceTypeDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceTypeDO { + pub fn __all__(db: JavaDB) -> *ReferenceTypeDO { for (tmp in db.reference_type) { yield ReferenceTypeDO { oid : tmp.oid, @@ -4135,7 +4135,7 @@ schema ResourceListDO { impl ResourceListDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ResourceListDO { + pub fn __all__(db: JavaDB) -> *ResourceListDO { for (tmp in db.resource_list) { yield ResourceListDO { element_hash_id : tmp.element_hash_id, @@ -4177,7 +4177,7 @@ schema ReturnStatementDO { impl ReturnStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReturnStatementDO { + pub fn __all__(db: JavaDB) -> *ReturnStatementDO { for (tmp in db.return_statement) { yield ReturnStatementDO { element_hash_id : tmp.element_hash_id, @@ -4207,7 +4207,7 @@ schema StatementDO { impl StatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *StatementDO { + pub fn __all__(db: JavaDB) -> *StatementDO { for (tmp in db.statement) { yield StatementDO { element_hash_id : tmp.element_hash_id, @@ -4265,7 +4265,7 @@ schema StatementEnclosingExpressionDO { impl StatementEnclosingExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *StatementEnclosingExpressionDO { + pub fn __all__(db: JavaDB) -> *StatementEnclosingExpressionDO { for (tmp in db.statement_enclosing_expression) { yield StatementEnclosingExpressionDO { expression_hash_id : tmp.expression_hash_id, @@ -4291,7 +4291,7 @@ schema StringLiteralDO { impl StringLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *StringLiteralDO { + pub fn __all__(db: JavaDB) -> *StringLiteralDO { for (tmp in db.string_literal) { yield StringLiteralDO { element_hash_id : tmp.element_hash_id, @@ -4316,7 +4316,7 @@ schema SuperAccessExpressionDO { impl SuperAccessExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperAccessExpressionDO { + pub fn __all__(db: JavaDB) -> *SuperAccessExpressionDO { for (tmp in db.super_access_expression) { yield SuperAccessExpressionDO { element_hash_id : tmp.element_hash_id @@ -4333,7 +4333,7 @@ schema SuperConstructorInvocationDO { impl SuperConstructorInvocationDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperConstructorInvocationDO { + pub fn __all__(db: JavaDB) -> *SuperConstructorInvocationDO { for (tmp in db.super_constructor_invocation) { yield SuperConstructorInvocationDO { element_hash_id : tmp.element_hash_id @@ -4350,7 +4350,7 @@ schema SuperExpressionDO { impl SuperExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperExpressionDO { + pub fn __all__(db: JavaDB) -> *SuperExpressionDO { for (tmp in db.super_expression) { yield SuperExpressionDO { element_hash_id : tmp.element_hash_id @@ -4368,7 +4368,7 @@ schema SuperExpressionWithQualifierDO { impl SuperExpressionWithQualifierDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperExpressionWithQualifierDO { + pub fn __all__(db: JavaDB) -> *SuperExpressionWithQualifierDO { for (tmp in db.super_expression_with_qualifier) { yield SuperExpressionWithQualifierDO { element_hash_id : tmp.element_hash_id, @@ -4396,7 +4396,7 @@ schema SwitchLabelStatementDO { impl SwitchLabelStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SwitchLabelStatementDO { + pub fn __all__(db: JavaDB) -> *SwitchLabelStatementDO { for (tmp in db.switch_label_statement) { yield SwitchLabelStatementDO { element_hash_id : tmp.element_hash_id, @@ -4439,7 +4439,7 @@ schema SwitchStatementDO { impl SwitchStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SwitchStatementDO { + pub fn __all__(db: JavaDB) -> *SwitchStatementDO { for (tmp in db.switch_statement) { yield SwitchStatementDO { element_hash_id : tmp.element_hash_id, @@ -4474,7 +4474,7 @@ schema SynchronizedStatementDO { impl SynchronizedStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *SynchronizedStatementDO { + pub fn __all__(db: JavaDB) -> *SynchronizedStatementDO { for (tmp in db.synchronized_statement) { yield SynchronizedStatementDO { element_hash_id : tmp.element_hash_id, @@ -4511,7 +4511,7 @@ schema ThisAccessExpressionDO { impl ThisAccessExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ThisAccessExpressionDO { + pub fn __all__(db: JavaDB) -> *ThisAccessExpressionDO { for (tmp in db.this_access_expression) { yield ThisAccessExpressionDO { element_hash_id : tmp.element_hash_id @@ -4529,7 +4529,7 @@ schema ThisExpressionWithQualifierDO { impl ThisExpressionWithQualifierDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ThisExpressionWithQualifierDO { + pub fn __all__(db: JavaDB) -> *ThisExpressionWithQualifierDO { for (tmp in db.this_expression_with_qualifier) { yield ThisExpressionWithQualifierDO { element_hash_id : tmp.element_hash_id, @@ -4556,7 +4556,7 @@ schema ThrowStatementDO { impl ThrowStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *ThrowStatementDO { + pub fn __all__(db: JavaDB) -> *ThrowStatementDO { for (tmp in db.throw_statement) { yield ThrowStatementDO { element_hash_id : tmp.element_hash_id, @@ -4592,7 +4592,7 @@ schema TokenDO { impl TokenDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TokenDO { + pub fn __all__(db: JavaDB) -> *TokenDO { for (tmp in db.token) { yield TokenDO { element_hash_id : tmp.element_hash_id, @@ -4635,7 +4635,7 @@ schema TryStatementWithFinallyDO { impl TryStatementWithFinallyDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TryStatementWithFinallyDO { + pub fn __all__(db: JavaDB) -> *TryStatementWithFinallyDO { for (tmp in db.try_statement_with_finally) { yield TryStatementWithFinallyDO { element_hash_id : tmp.element_hash_id, @@ -4669,7 +4669,7 @@ schema TryStatementWithoutFinallyDO { impl TryStatementWithoutFinallyDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TryStatementWithoutFinallyDO { + pub fn __all__(db: JavaDB) -> *TryStatementWithoutFinallyDO { for (tmp in db.try_statement_without_finally) { yield TryStatementWithoutFinallyDO { element_hash_id : tmp.element_hash_id, @@ -4695,7 +4695,7 @@ schema TypeCastExpressionDO { impl TypeCastExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeCastExpressionDO { + pub fn __all__(db: JavaDB) -> *TypeCastExpressionDO { for (tmp in db.type_cast_expression) { yield TypeCastExpressionDO { element_hash_id : tmp.element_hash_id, @@ -4724,7 +4724,7 @@ schema TypeElementDO { impl TypeElementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeElementDO { + pub fn __all__(db: JavaDB) -> *TypeElementDO { for (tmp in db.type_element) { yield TypeElementDO { element_hash_id : tmp.element_hash_id, @@ -4775,7 +4775,7 @@ schema TypeLiteralDO { impl TypeLiteralDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeLiteralDO { + pub fn __all__(db: JavaDB) -> *TypeLiteralDO { for (tmp in db.type_literal) { yield TypeLiteralDO { element_hash_id : tmp.element_hash_id, @@ -4814,7 +4814,7 @@ schema TypeParameterDO { impl TypeParameterDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeParameterDO { + pub fn __all__(db: JavaDB) -> *TypeParameterDO { for (tmp in db.type_parameter) { yield TypeParameterDO { element_hash_id : tmp.element_hash_id, @@ -4882,7 +4882,7 @@ schema UnaryExpressionDO { impl UnaryExpressionDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *UnaryExpressionDO { + pub fn __all__(db: JavaDB) -> *UnaryExpressionDO { for (tmp in db.unary_expression) { yield UnaryExpressionDO { element_hash_id : tmp.element_hash_id, @@ -4925,7 +4925,7 @@ schema WhileStatementDO { impl WhileStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *WhileStatementDO { + pub fn __all__(db: JavaDB) -> *WhileStatementDO { for (tmp in db.while_statement) { yield WhileStatementDO { element_hash_id : tmp.element_hash_id, @@ -4962,7 +4962,7 @@ schema YieldStatementDO { impl YieldStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *YieldStatementDO { + pub fn __all__(db: JavaDB) -> *YieldStatementDO { for (tmp in db.yield_statement) { yield YieldStatementDO { element_hash_id : tmp.element_hash_id, @@ -4997,7 +4997,7 @@ schema NpProjectDO { impl NpProjectDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpProjectDO { + pub fn __all__(db: JavaDB) -> *NpProjectDO { for (tmp in db.np_project) { yield NpProjectDO { element_hash_id : tmp.element_hash_id, @@ -5033,7 +5033,7 @@ schema NpFileDO { impl NpFileDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpFileDO { + pub fn __all__(db: JavaDB) -> *NpFileDO { for (tmp in db.np_file) { yield NpFileDO { element_hash_id : tmp.element_hash_id, @@ -5077,7 +5077,7 @@ schema NpClassDO { impl NpClassDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpClassDO { + pub fn __all__(db: JavaDB) -> *NpClassDO { for (tmp in db.np_class) { yield NpClassDO { element_hash_id : tmp.element_hash_id, @@ -5121,7 +5121,7 @@ schema NpInterfaceDO { impl NpInterfaceDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpInterfaceDO { + pub fn __all__(db: JavaDB) -> *NpInterfaceDO { for (tmp in db.np_interface) { yield NpInterfaceDO { element_hash_id : tmp.element_hash_id, @@ -5166,7 +5166,7 @@ schema NpMethodDO { impl NpMethodDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpMethodDO { + pub fn __all__(db: JavaDB) -> *NpMethodDO { for (tmp in db.np_method) { yield NpMethodDO { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Documentation.gdl b/language/java/lib/Documentation.gdl index 8c40d7c2..d2bea511 100644 --- a/language/java/lib/Documentation.gdl +++ b/language/java/lib/Documentation.gdl @@ -7,7 +7,7 @@ schema Comment extends CommentDO { impl Comment { @data_constraint @inline - fn __all__(db: JavaDB) -> *Comment { + pub fn __all__(db: JavaDB) -> *Comment { for (tmp in CommentDO(db)) { yield Comment { element_hash_id : tmp.element_hash_id, @@ -61,7 +61,7 @@ schema JavadocComment extends JavadocCommentDO { impl JavadocComment { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocComment { + pub fn __all__(db: JavaDB) -> *JavadocComment { for (tmp in JavadocCommentDO(db)) { yield JavadocComment { element_hash_id : tmp.element_hash_id, @@ -126,7 +126,7 @@ schema JavadocTag extends JavadocTagDO { impl JavadocTag { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocTag { + pub fn __all__(db: JavaDB) -> *JavadocTag { for (tmp in JavadocTagDO(db)) { yield JavadocTag { element_hash_id : tmp.element_hash_id, @@ -192,7 +192,7 @@ schema JavadocTagValue extends JavadocTagValueDO { impl JavadocTagValue { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocTagValue { + pub fn __all__(db: JavaDB) -> *JavadocTagValue { for (tmp in JavadocTagValueDO(db)) { yield JavadocTagValue { element_hash_id : tmp.element_hash_id, @@ -245,7 +245,7 @@ schema JavadocDataToken extends JavadocDataTokenDO { impl JavadocDataToken { @data_constraint @inline - fn __all__(db: JavaDB) -> *JavadocDataToken { + pub fn __all__(db: JavaDB) -> *JavadocDataToken { for (tmp in JavadocDataTokenDO(db)) { yield JavadocDataToken { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Expression.gdl b/language/java/lib/Expression.gdl index 6ecbb843..86457847 100644 --- a/language/java/lib/Expression.gdl +++ b/language/java/lib/Expression.gdl @@ -7,7 +7,7 @@ schema Expression extends ExpressionDO { impl Expression { @data_constraint @inline - fn __all__(db: JavaDB) -> *Expression { + pub fn __all__(db: JavaDB) -> *Expression { for (tmp in ExpressionDO(db)) { yield Expression { element_hash_id : tmp.element_hash_id, @@ -96,7 +96,7 @@ schema ArrayInitializer extends Expression { impl ArrayInitializer { @data_constraint @inline - fn __all__(db: JavaDB) -> *ArrayInitializer { + pub fn __all__(db: JavaDB) -> *ArrayInitializer { for (tmp in Expression(db)) { for (ai in ArrayInitializerExpression(db)) { if (ai.key_eq(tmp.getParent())) { @@ -129,7 +129,7 @@ schema ExpressionListElement extends Expression { impl ExpressionListElement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionListElement { + pub fn __all__(db: JavaDB) -> *ExpressionListElement { for (tmp in Expression(db)) { for (ele in ExpressionList(db)) { if (ele.key_eq(tmp.getParent())) { @@ -162,7 +162,7 @@ schema AssignmentExpression extends Expression { impl AssignmentExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *AssignmentExpression { + pub fn __all__(db: JavaDB) -> *AssignmentExpression { for (tmp in Expression(db)) { for (ae in AssignmentExpressionDO(db)) { if (tmp.key_eq(ae)) { @@ -229,7 +229,7 @@ schema BinaryExpression extends Expression { impl BinaryExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *BinaryExpression { + pub fn __all__(db: JavaDB) -> *BinaryExpression { for (tmp in Expression(db)) { for (be in BinaryExpressionDO(db)) { if (tmp.key_eq(be)) { @@ -313,7 +313,7 @@ schema AndLogicalExpression extends BinaryExpression { impl AndLogicalExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *AndLogicalExpression { + pub fn __all__(db: JavaDB) -> *AndLogicalExpression { for (tmp in BinaryExpression(db)) { for (be in BinaryExpression(db)) { if (tmp = be) { @@ -341,7 +341,7 @@ schema OrLogicalExpression extends BinaryExpression { impl OrLogicalExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *OrLogicalExpression { + pub fn __all__(db: JavaDB) -> *OrLogicalExpression { for (tmp in BinaryExpression(db)) { for (be in BinaryExpression(db)) { if (tmp = be) { @@ -366,7 +366,7 @@ schema ConditionalPolyadicExpression extends PolyadicExpression { impl ConditionalPolyadicExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConditionalPolyadicExpression { + pub fn __all__(db: JavaDB) -> *ConditionalPolyadicExpression { for (tmp in PolyadicExpression(db)) { for (p in PolyadicExpression(db)) { if (tmp = p) { @@ -404,7 +404,7 @@ schema UnaryExpression extends Expression { impl UnaryExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *UnaryExpression { + pub fn __all__(db: JavaDB) -> *UnaryExpression { for (tmp in Expression(db)) { for (ue in UnaryExpressionDO(db)) { if (tmp.key_eq(ue)) { @@ -457,7 +457,7 @@ schema LogNotExpression extends UnaryExpression { impl LogNotExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *LogNotExpression { + pub fn __all__(db: JavaDB) -> *LogNotExpression { for (tmp in UnaryExpression(db)) { if (tmp.getOpcode() = "!") { yield LogNotExpression { @@ -481,7 +481,7 @@ schema LogicExpression extends Expression { impl LogicExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *LogicExpression { + pub fn __all__(db: JavaDB) -> *LogicExpression { for (tmp in Expression(db)) { for (lne in LogNotExpression(db)) { if (tmp.key_eq(lne)) { @@ -565,7 +565,7 @@ schema ConditionalExpression extends Expression { impl ConditionalExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConditionalExpression { + pub fn __all__(db: JavaDB) -> *ConditionalExpression { for (tmp in Expression(db)) { for (ce in ConditionalExpressionDO(db)) { if (tmp.key_eq(ce)) { @@ -633,7 +633,7 @@ schema LambdaExpression extends Expression { impl LambdaExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *LambdaExpression { + pub fn __all__(db: JavaDB) -> *LambdaExpression { for (tmp in Expression(db)) { for (le in LambdaExpressionDO(db)) { if (tmp.key_eq(le)) { @@ -684,7 +684,7 @@ schema ThisAccessExpression extends Expression { impl ThisAccessExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ThisAccessExpression { + pub fn __all__(db: JavaDB) -> *ThisAccessExpression { for (tmp in Expression(db)) { for (tae in ThisAccessExpressionDO(db)) { if (tmp.key_eq(tae)) { @@ -710,7 +710,7 @@ schema NewExpression extends Expression { impl NewExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *NewExpression { + pub fn __all__(db: JavaDB) -> *NewExpression { for (tmp in Expression(db)) { for (ne in NewExpressionDO(db)) { if (tmp.key_eq(ne)) { @@ -778,7 +778,7 @@ schema SuperAccessExpression extends Expression { impl SuperAccessExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperAccessExpression { + pub fn __all__(db: JavaDB) -> *SuperAccessExpression { for (tmp in Expression(db)) { for (sae in SuperAccessExpressionDO(db)) { if (tmp.key_eq(sae)) { @@ -817,7 +817,7 @@ schema SuperConstructorInvocation extends Expression { impl SuperConstructorInvocation { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperConstructorInvocation { + pub fn __all__(db: JavaDB) -> *SuperConstructorInvocation { for (tmp in Expression(db)) { for (sci in SuperConstructorInvocationDO(db)) { if (tmp.key_eq(sci)) { @@ -856,7 +856,7 @@ schema ReferenceExpression extends Expression { impl ReferenceExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceExpression { + pub fn __all__(db: JavaDB) -> *ReferenceExpression { for (tmp in Expression(db)) { for (re in ReferenceExpressionDO(db)) { if (tmp.key_eq(re)) { @@ -924,7 +924,7 @@ schema StatementEnclosingExpression extends StatementEnclosingExpressionDO { impl StatementEnclosingExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *StatementEnclosingExpression { + pub fn __all__(db: JavaDB) -> *StatementEnclosingExpression { for (tmp in StatementEnclosingExpressionDO(db)) { yield StatementEnclosingExpression { expression_hash_id : tmp.expression_hash_id, @@ -953,7 +953,7 @@ schema InstanceofExpression extends Expression { impl InstanceofExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *InstanceofExpression { + pub fn __all__(db: JavaDB) -> *InstanceofExpression { for (tmp in Expression(db)) { for (ioe in InstanceofExpressionDO(db)) { if (tmp.key_eq(ioe)) { @@ -1004,7 +1004,7 @@ schema MethodAccessExpressionWithType extends Expression { impl MethodAccessExpressionWithType { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodAccessExpressionWithType { + pub fn __all__(db: JavaDB) -> *MethodAccessExpressionWithType { for (tmp in Expression(db)) { for (m in MethodAccessExpressionWithTypeDO(db)) { if (tmp.key_eq(m)) { @@ -1055,7 +1055,7 @@ schema MethodAccessExpressionWithoutType extends Expression { impl MethodAccessExpressionWithoutType { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodAccessExpressionWithoutType { + pub fn __all__(db: JavaDB) -> *MethodAccessExpressionWithoutType { for (tmp in Expression(db)) { for (m in MethodAccessExpressionWithoutTypeDO(db)) { if (tmp.key_eq(m)) { @@ -1095,7 +1095,7 @@ schema MethodAccessExpression extends Expression { impl MethodAccessExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodAccessExpression { + pub fn __all__(db: JavaDB) -> *MethodAccessExpression { for (tmp in Expression(db)) { for (mae in MethodAccessExpressionWithoutType(db)) { if (tmp.key_eq(mae)) { @@ -1235,7 +1235,7 @@ schema MethodReferenceExpression extends Expression { impl MethodReferenceExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *MethodReferenceExpression { + pub fn __all__(db: JavaDB) -> *MethodReferenceExpression { for (tmp in Expression(db)) { for (m in MethodReferenceExpressionDO(db)) { if (tmp.key_eq(m)) { @@ -1330,7 +1330,7 @@ schema ConstructorInvocation extends Expression { impl ConstructorInvocation { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConstructorInvocation { + pub fn __all__(db: JavaDB) -> *ConstructorInvocation { for (tmp in Expression(db)) { for (ci in ConstructorInvocationDO(db)) { if (tmp.key_eq(ci)) { @@ -1401,7 +1401,7 @@ schema ReferenceList extends ReferenceListDO { impl ReferenceList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceList { + pub fn __all__(db: JavaDB) -> *ReferenceList { for (tmp in ReferenceListDO(db)) { yield ReferenceList { element_hash_id : tmp.element_hash_id, @@ -1466,7 +1466,7 @@ schema TypeCastExpression extends Expression { impl TypeCastExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeCastExpression { + pub fn __all__(db: JavaDB) -> *TypeCastExpression { for (tmp in Expression(db)) { for (m in TypeCastExpressionDO(db)) { if (tmp.key_eq(m)) { @@ -1514,7 +1514,7 @@ schema PolyadicExpression extends Expression { impl PolyadicExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *PolyadicExpression { + pub fn __all__(db: JavaDB) -> *PolyadicExpression { for (tmp in Expression(db)) { for (m in PolyadicExpressionDO(db)) { if (tmp.key_eq(m)) { diff --git a/language/java/lib/Identifier.gdl b/language/java/lib/Identifier.gdl index b62d98c7..eacc6679 100644 --- a/language/java/lib/Identifier.gdl +++ b/language/java/lib/Identifier.gdl @@ -7,7 +7,7 @@ schema Identifier extends IdentifierDO { impl Identifier { @data_constraint @inline - fn __all__(db: JavaDB) -> *Identifier { + pub fn __all__(db: JavaDB) -> *Identifier { for (tmp in IdentifierDO(db)) { yield Identifier { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Literal.gdl b/language/java/lib/Literal.gdl index 167c4b64..8e678ddf 100644 --- a/language/java/lib/Literal.gdl +++ b/language/java/lib/Literal.gdl @@ -7,7 +7,7 @@ schema Literal extends Expression { impl Literal { @data_constraint @inline - fn __all__(db: JavaDB) -> *Literal { + pub fn __all__(db: JavaDB) -> *Literal { for (tmp in Expression(db)) { for (s in StringLiteralDO(db)) { if (tmp.key_eq(s)) { @@ -243,7 +243,7 @@ schema StringLiteral extends Literal { impl StringLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *StringLiteral { + pub fn __all__(db: JavaDB) -> *StringLiteral { for (tmp in Literal(db)) { for (l in StringLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -279,7 +279,7 @@ schema DoubleLiteral extends Literal { impl DoubleLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *DoubleLiteral { + pub fn __all__(db: JavaDB) -> *DoubleLiteral { for (tmp in Literal(db)) { for (l in DoubleLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -305,7 +305,7 @@ schema IntegerLiteral extends Literal { impl IntegerLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *IntegerLiteral { + pub fn __all__(db: JavaDB) -> *IntegerLiteral { for (tmp in Literal(db)) { for (l in IntegerLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -331,7 +331,7 @@ schema FloatingPointLiteral extends Literal { impl FloatingPointLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *FloatingPointLiteral { + pub fn __all__(db: JavaDB) -> *FloatingPointLiteral { for (tmp in Literal(db)) { for (l in FloatingPointLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -357,7 +357,7 @@ schema LongLiteral extends Literal { impl LongLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *LongLiteral { + pub fn __all__(db: JavaDB) -> *LongLiteral { for (tmp in Literal(db)) { for (l in LongLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -383,7 +383,7 @@ schema NullLiteral extends Literal { impl NullLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *NullLiteral { + pub fn __all__(db: JavaDB) -> *NullLiteral { for (tmp in Literal(db)) { for (l in NullLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -409,7 +409,7 @@ schema CharacterLiteral extends Literal { impl CharacterLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *CharacterLiteral { + pub fn __all__(db: JavaDB) -> *CharacterLiteral { for (tmp in Literal(db)) { for (l in CharacterLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -435,7 +435,7 @@ schema BooleanLiteral extends Literal { impl BooleanLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *BooleanLiteral { + pub fn __all__(db: JavaDB) -> *BooleanLiteral { for (tmp in Literal(db)) { for (l in BooleanLiteralDO(db)) { if (tmp.key_eq(l)) { @@ -461,7 +461,7 @@ schema TypeLiteral extends Expression { impl TypeLiteral { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeLiteral { + pub fn __all__(db: JavaDB) -> *TypeLiteral { for (tmp in Expression(db)) { for (t in TypeLiteralDO(db)) { if (tmp.key_eq(t)) { diff --git a/language/java/lib/Location.gdl b/language/java/lib/Location.gdl index c622a60c..4ece0e9a 100644 --- a/language/java/lib/Location.gdl +++ b/language/java/lib/Location.gdl @@ -7,7 +7,7 @@ schema Location extends LocationDO { impl Location { @data_constraint @inline - fn __all__(db: JavaDB) -> *Location { + pub fn __all__(db: JavaDB) -> *Location { for (tmp in LocationDO(db)) { yield Location { element_hash_id : tmp.element_hash_id, @@ -40,7 +40,7 @@ schema NumberOfLines extends NumberOfLinesDO { impl NumberOfLines { @data_constraint @inline - fn __all__(db: JavaDB) -> *NumberOfLines { + pub fn __all__(db: JavaDB) -> *NumberOfLines { for (tmp in NumberOfLinesDO(db)) { yield NumberOfLines { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Method.gdl b/language/java/lib/Method.gdl index fc98301b..a7dd1684 100644 --- a/language/java/lib/Method.gdl +++ b/language/java/lib/Method.gdl @@ -7,7 +7,7 @@ schema Method extends MethodDO { impl Method { @data_constraint @inline - fn __all__(db: JavaDB) -> *Method { + pub fn __all__(db: JavaDB) -> *Method { for (tmp in MethodDO(db)) { yield Method { element_hash_id : tmp.element_hash_id, @@ -197,7 +197,7 @@ schema Exception extends ExceptionDO { impl Exception { @data_constraint @inline - fn __all__(db: JavaDB) -> *Exception { + pub fn __all__(db: JavaDB) -> *Exception { for (tmp in ExceptionDO(db)) { yield Exception { element_hash_id : tmp.element_hash_id, @@ -250,7 +250,7 @@ schema SuperExpression extends Expression { impl SuperExpression { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperExpression { + pub fn __all__(db: JavaDB) -> *SuperExpression { for (tmp in Expression(db)) { for (s in SuperExpressionDO(db)) { if (tmp.key_eq(s)) { @@ -276,7 +276,7 @@ schema SuperExpressionWithQualifier extends SuperExpression { impl SuperExpressionWithQualifier { @data_constraint @inline - fn __all__(db: JavaDB) -> *SuperExpressionWithQualifier { + pub fn __all__(db: JavaDB) -> *SuperExpressionWithQualifier { for (tmp in SuperExpression(db)) { for (s in SuperExpressionWithQualifierDO(db)) { if (tmp.key_eq(s)) { @@ -314,7 +314,7 @@ schema NpMethod extends NpMethodDO { impl NpMethod { @data_constraint @inline - fn __all__(db: JavaDB) -> *NpMethod { + pub fn __all__(db: JavaDB) -> *NpMethod { for (tmp in NpMethodDO(db)) { for (m in NpMethodDO(db)) { if (tmp = m) { diff --git a/language/java/lib/Modifier.gdl b/language/java/lib/Modifier.gdl index c2dbf9a5..e7013a02 100644 --- a/language/java/lib/Modifier.gdl +++ b/language/java/lib/Modifier.gdl @@ -7,7 +7,7 @@ schema Modifier extends ModifierDO { impl Modifier { @data_constraint @inline - fn __all__(db: JavaDB) -> *Modifier { + pub fn __all__(db: JavaDB) -> *Modifier { for (tmp in ModifierDO(db)) { yield Modifier { element_hash_id : tmp.element_hash_id, @@ -71,7 +71,7 @@ schema ModifierList extends ModifierListDO { impl ModifierList { @data_constraint @inline - fn __all__(db: JavaDB) -> *ModifierList { + pub fn __all__(db: JavaDB) -> *ModifierList { for (tmp in ModifierListDO(db)) { yield ModifierList { element_hash_id : tmp.element_hash_id, diff --git a/language/java/lib/Parameter.gdl b/language/java/lib/Parameter.gdl index 9270d0d9..a3d6128b 100644 --- a/language/java/lib/Parameter.gdl +++ b/language/java/lib/Parameter.gdl @@ -7,7 +7,7 @@ schema Parameter extends ParameterDO { impl Parameter { @data_constraint @inline - fn __all__(db: JavaDB) -> *Parameter { + pub fn __all__(db: JavaDB) -> *Parameter { for (tmp in ParameterDO(db)) { yield Parameter { element_hash_id : tmp.element_hash_id, @@ -123,7 +123,7 @@ schema TypeParameter extends TypeParameterDO { impl TypeParameter { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeParameter { + pub fn __all__(db: JavaDB) -> *TypeParameter { for (tmp in TypeParameterDO(db)) { yield TypeParameter { element_hash_id : tmp.element_hash_id, @@ -201,7 +201,7 @@ schema Variable { impl Variable { @data_constraint @inline - fn __all__(db: JavaDB) -> *Variable { + pub fn __all__(db: JavaDB) -> *Variable { for (l in LocalVariable(db)) { yield Variable {id : l.element_hash_id} } diff --git a/language/java/lib/Parent.gdl b/language/java/lib/Parent.gdl index c5cca2a5..1ac55084 100644 --- a/language/java/lib/Parent.gdl +++ b/language/java/lib/Parent.gdl @@ -7,7 +7,7 @@ schema ElementParent { impl ElementParent { @data_constraint @inline - fn __all__(db: JavaDB) -> *ElementParent { + pub fn __all__(db: JavaDB) -> *ElementParent { for (s in Statement(db)) { yield ElementParent {id : s.element_hash_id} } @@ -1170,7 +1170,7 @@ schema StatementParent extends ElementParent { impl StatementParent { @data_constraint @inline - fn __all__(db: JavaDB) -> *StatementParent { + pub fn __all__(db: JavaDB) -> *StatementParent { for (tmp in ElementParent(db)) { for (s in Statement(db)) { if (tmp = s.getParent()) { @@ -1202,7 +1202,7 @@ schema ExpressionParent extends ElementParent { impl ExpressionParent { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionParent { + pub fn __all__(db: JavaDB) -> *ExpressionParent { for (tmp in ElementParent(db)) { for (s in Expression(db)) { if (tmp = s.getParent()) { diff --git a/language/java/lib/Statement.gdl b/language/java/lib/Statement.gdl index 4de173a7..2b922619 100644 --- a/language/java/lib/Statement.gdl +++ b/language/java/lib/Statement.gdl @@ -7,7 +7,7 @@ schema Statement extends StatementDO { impl Statement { @data_constraint @inline - fn __all__(db: JavaDB) -> *Statement { + pub fn __all__(db: JavaDB) -> *Statement { for (tmp in StatementDO(db)) { yield Statement { element_hash_id : tmp.element_hash_id, @@ -127,7 +127,7 @@ schema CallableEnclosingStatement extends CallableEnclosingStatementDO { impl CallableEnclosingStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *CallableEnclosingStatement { + pub fn __all__(db: JavaDB) -> *CallableEnclosingStatement { for (tmp in CallableEnclosingStatementDO(db)) { yield CallableEnclosingStatement { statement_hash_id : tmp.statement_hash_id, @@ -156,7 +156,7 @@ schema BlockStatement extends Statement { impl BlockStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *BlockStatement { + pub fn __all__(db: JavaDB) -> *BlockStatement { for (tmp in Statement(db)) { for (bs in BlockStatementDO(db)) { if (tmp.key_eq(bs)) { @@ -240,7 +240,7 @@ schema CodeBlock extends CodeBlockDO { impl CodeBlock { @data_constraint @inline - fn __all__(db: JavaDB) -> *CodeBlock { + pub fn __all__(db: JavaDB) -> *CodeBlock { for (tmp in CodeBlockDO(db)) { yield CodeBlock { element_hash_id : tmp.element_hash_id, @@ -319,7 +319,7 @@ schema AssertStatement extends Statement { impl AssertStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *AssertStatement { + pub fn __all__(db: JavaDB) -> *AssertStatement { for (tmp in Statement(db)) { for (s in AssertStatementDO(db)) { if (tmp.key_eq(s)) { @@ -373,7 +373,7 @@ schema PackageStatement extends PackageStatementDO { impl PackageStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *PackageStatement { + pub fn __all__(db: JavaDB) -> *PackageStatement { for (tmp in PackageStatementDO(db)) { yield PackageStatement { element_hash_id : tmp.element_hash_id, @@ -449,7 +449,7 @@ schema LocalClass extends LocalClassDO { impl LocalClass { @data_constraint @inline - fn __all__(db: JavaDB) -> *LocalClass { + pub fn __all__(db: JavaDB) -> *LocalClass { for (tmp in LocalClassDO(db)) { yield LocalClass { element_hash_id : tmp.element_hash_id, @@ -503,7 +503,7 @@ schema EmptyStatement extends Statement { impl EmptyStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *EmptyStatement { + pub fn __all__(db: JavaDB) -> *EmptyStatement { for (tmp in Statement(db)) { for (s in EmptyStatementDO(db)) { if (tmp.key_eq(s)) { @@ -529,7 +529,7 @@ schema ReturnStatement extends Statement { impl ReturnStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReturnStatement { + pub fn __all__(db: JavaDB) -> *ReturnStatement { for (tmp in Statement(db)) { for (ret in ReturnStatementDO(db)) { if (tmp.key_eq(ret)) { @@ -569,7 +569,7 @@ schema DeclarationStatementDO { impl DeclarationStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *DeclarationStatementDO { + pub fn __all__(db: JavaDB) -> *DeclarationStatementDO { for (tmp: DeclarationElementDO in db.declaration_element) { yield DeclarationStatementDO { id: tmp.declaration_statement_hash_id } } @@ -584,7 +584,7 @@ schema DeclarationStatement extends Statement { impl DeclarationStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *DeclarationStatement { + pub fn __all__(db: JavaDB) -> *DeclarationStatement { for (tmp in Statement(db)) { for (dsr in DeclarationStatementDO(db)) { if (tmp.key_eq(dsr)) { @@ -640,7 +640,7 @@ schema DeclaredElement extends DeclarationElementDO { impl DeclaredElement { @data_constraint @inline - fn __all__(db: JavaDB) -> *DeclaredElement { + pub fn __all__(db: JavaDB) -> *DeclaredElement { for (tmp in DeclarationElementDO(db)) { yield DeclaredElement { element_hash_id : tmp.element_hash_id, @@ -692,7 +692,7 @@ schema ThrowStatement extends Statement { impl ThrowStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ThrowStatement { + pub fn __all__(db: JavaDB) -> *ThrowStatement { for (tmp in Statement(db)) { for (ths in ThrowStatementDO(db)) { if (tmp.key_eq(ths)) { @@ -760,7 +760,7 @@ schema LabeledStatement extends Statement { impl LabeledStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *LabeledStatement { + pub fn __all__(db: JavaDB) -> *LabeledStatement { for (tmp in Statement(db)) { for (ls in LabeledStatementDO(db)) { if (tmp.key_eq(ls)) { @@ -821,7 +821,7 @@ schema ContinueStatement extends Statement { impl ContinueStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ContinueStatement { + pub fn __all__(db: JavaDB) -> *ContinueStatement { for (tmp in Statement(db)) { for (cs in ContinueStatementDO(db)) { if (tmp.key_eq(cs)) { @@ -861,7 +861,7 @@ schema YieldStatement extends Statement { impl YieldStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *YieldStatement { + pub fn __all__(db: JavaDB) -> *YieldStatement { for (tmp in Statement(db)) { for (ys in YieldStatementDO(db)) { if (tmp.key_eq(ys)) { @@ -887,7 +887,7 @@ schema ExpressionStatement extends Statement { impl ExpressionStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ExpressionStatement { + pub fn __all__(db: JavaDB) -> *ExpressionStatement { for (tmp in Statement(db)) { for (es in ExpressionStatementDO(db)) { if (tmp.key_eq(es)) { @@ -924,7 +924,7 @@ schema JumpStatement extends Statement { impl JumpStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *JumpStatement { + pub fn __all__(db: JavaDB) -> *JumpStatement { for (tmp in Statement(db)) { for (bStmt in BreakStatement(db)) { if (tmp.key_eq(bStmt)) { @@ -1039,7 +1039,7 @@ schema NameString extends NameStringDO { impl NameString { @data_constraint @inline - fn __all__(db: JavaDB) -> *NameString { + pub fn __all__(db: JavaDB) -> *NameString { for (tmp in NameStringDO(db)) { yield NameString { parent_hash_id : tmp.parent_hash_id, @@ -1077,7 +1077,7 @@ schema TryStatementDO { impl TryStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *TryStatementDO { + pub fn __all__(db: JavaDB) -> *TryStatementDO { for (t in TryStatementWithFinallyDO(db)) { yield TryStatementDO {id : t.element_hash_id} } @@ -1118,7 +1118,7 @@ schema TryStatement extends Statement { impl TryStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *TryStatement { + pub fn __all__(db: JavaDB) -> *TryStatement { for (tmp in Statement(db)) { for (ts in TryStatementDO(db)) { if (tmp.key_eq(ts)) { @@ -1216,7 +1216,7 @@ schema CatchClause extends CatchSectionDO { impl CatchClause { @data_constraint @inline - fn __all__(db: JavaDB) -> *CatchClause { + pub fn __all__(db: JavaDB) -> *CatchClause { for (tmp in CatchSectionDO(db)) { yield CatchClause { element_hash_id : tmp.element_hash_id, @@ -1316,7 +1316,7 @@ schema BreakStatement extends Statement { impl BreakStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *BreakStatement { + pub fn __all__(db: JavaDB) -> *BreakStatement { for (tmp in Statement(db)) { for (bs in BreakStatementDO(db)) { if (tmp.key_eq(bs)) { @@ -1356,7 +1356,7 @@ schema ConditionalStatement extends Statement { impl ConditionalStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConditionalStatement { + pub fn __all__(db: JavaDB) -> *ConditionalStatement { for (tmp in Statement(db)) { for (ifs in IfStatement(db)) { if (tmp.key_eq(ifs)) { @@ -1451,7 +1451,7 @@ schema IfStatementDO { impl IfStatementDO { @data_constraint @inline - fn __all__(db: JavaDB) -> *IfStatementDO { + pub fn __all__(db: JavaDB) -> *IfStatementDO { for (i in IfStatementWithElseDO(db)) { yield IfStatementDO {id : i.element_hash_id} } @@ -1500,7 +1500,7 @@ schema IfStatement extends Statement { impl IfStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *IfStatement { + pub fn __all__(db: JavaDB) -> *IfStatement { for (tmp in Statement(db)) { for (ifs in IfStatementDO(db)) { if (tmp.key_eq(ifs)) { @@ -1568,7 +1568,7 @@ schema ForStatement extends Statement { impl ForStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ForStatement { + pub fn __all__(db: JavaDB) -> *ForStatement { for (tmp in Statement(db)) { for (fs in ForStatementDO(db)) { if (tmp.key_eq(fs)) { @@ -1657,7 +1657,7 @@ schema ForeachStatement extends Statement { impl ForeachStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ForeachStatement { + pub fn __all__(db: JavaDB) -> *ForeachStatement { for (tmp in Statement(db)) { for (fs in ForeachStatementDO(db)) { if (tmp.key_eq(fs)) { @@ -1725,7 +1725,7 @@ schema WhileStatement extends Statement { impl WhileStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *WhileStatement { + pub fn __all__(db: JavaDB) -> *WhileStatement { for (tmp in Statement(db)) { for (ws in WhileStatementDO(db)) { if (tmp.key_eq(ws)) { @@ -1779,7 +1779,7 @@ schema DoWhileStatement extends Statement { impl DoWhileStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *DoWhileStatement { + pub fn __all__(db: JavaDB) -> *DoWhileStatement { for (tmp in Statement(db)) { for (dw in DoWhileStatementDO(db)) { if (tmp.key_eq(dw)) { @@ -1833,7 +1833,7 @@ schema LoopStatement extends Statement { impl LoopStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *LoopStatement { + pub fn __all__(db: JavaDB) -> *LoopStatement { for (tmp in Statement(db)) { for (fs in ForStatement(db)) { if (tmp.key_eq(fs)) { @@ -1895,7 +1895,7 @@ schema SwitchStatement extends Statement { impl SwitchStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *SwitchStatement { + pub fn __all__(db: JavaDB) -> *SwitchStatement { for (tmp in Statement(db)) { for (ss in SwitchStatementDO(db)) { if (tmp.key_eq(ss)) { @@ -1989,7 +1989,7 @@ schema SwitchLabelStatement extends Statement { impl SwitchLabelStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *SwitchLabelStatement { + pub fn __all__(db: JavaDB) -> *SwitchLabelStatement { for (tmp in Statement(db)) { for (sl in SwitchLabelStatementDO(db)) { if (tmp.key_eq(sl)) { @@ -2124,7 +2124,7 @@ schema DefaultSwitchLabelStatement extends SwitchLabelStatement { impl DefaultSwitchLabelStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *DefaultSwitchLabelStatement { + pub fn __all__(db: JavaDB) -> *DefaultSwitchLabelStatement { for (tmp in SwitchLabelStatement(db)) { if (tmp.isDefaultValue() = -1) { yield DefaultSwitchLabelStatement { @@ -2145,7 +2145,7 @@ schema ConstSwitchLabelStatement extends SwitchLabelStatement { impl ConstSwitchLabelStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *ConstSwitchLabelStatement { + pub fn __all__(db: JavaDB) -> *ConstSwitchLabelStatement { for (tmp in SwitchLabelStatement(db)) { for (ss in SwitchLabelStatement(db)) { if (tmp = ss) { @@ -2173,7 +2173,7 @@ schema SynchronizedStatement extends Statement { impl SynchronizedStatement { @data_constraint @inline - fn __all__(db: JavaDB) -> *SynchronizedStatement { + pub fn __all__(db: JavaDB) -> *SynchronizedStatement { for (tmp in Statement(db)) { for (ss in SynchronizedStatementDO(db)) { if (tmp.key_eq(ss)) { diff --git a/language/java/lib/Type.gdl b/language/java/lib/Type.gdl index 7eb8f981..b8cdd70f 100644 --- a/language/java/lib/Type.gdl +++ b/language/java/lib/Type.gdl @@ -7,7 +7,7 @@ schema Type { impl Type { @data_constraint @inline - fn __all__(db: JavaDB) -> *Type { + pub fn __all__(db: JavaDB) -> *Type { for (r in ReferenceType(db)) { yield Type {id : r.oid} } @@ -82,7 +82,7 @@ schema ReferenceType extends ReferenceTypeDO { impl ReferenceType { @data_constraint @inline - fn __all__(db: JavaDB) -> *ReferenceType { + pub fn __all__(db: JavaDB) -> *ReferenceType { for (tmp in ReferenceTypeDO(db)) { yield ReferenceType { oid : tmp.oid, @@ -101,7 +101,7 @@ schema TypeElement extends TypeElementDO { impl TypeElement { @data_constraint @inline - fn __all__(db: JavaDB) -> *TypeElement { + pub fn __all__(db: JavaDB) -> *TypeElement { for (tmp in TypeElementDO(db)) { yield TypeElement { element_hash_id : tmp.element_hash_id, @@ -166,7 +166,7 @@ schema Primitive extends PrimitiveDO { impl Primitive { @data_constraint @inline - fn __all__(db: JavaDB) -> *Primitive { + pub fn __all__(db: JavaDB) -> *Primitive { for (tmp in PrimitiveDO(db)) { yield Primitive { oid : tmp.oid, diff --git a/language/java/lib/token.gdl b/language/java/lib/token.gdl index da449b33..edd4605c 100644 --- a/language/java/lib/token.gdl +++ b/language/java/lib/token.gdl @@ -7,7 +7,7 @@ schema Token extends TokenDO { impl Token { @data_constraint @inline - fn __all__(db: JavaDB) -> *Token { + pub fn __all__(db: JavaDB) -> *Token { for (tmp in TokenDO(db)) { yield Token { element_hash_id : tmp.element_hash_id, diff --git a/language/javascript/lib/AlipayMiniProgram.gdl b/language/javascript/lib/AlipayMiniProgram.gdl index 83cda7ef..497b4620 100644 --- a/language/javascript/lib/AlipayMiniProgram.gdl +++ b/language/javascript/lib/AlipayMiniProgram.gdl @@ -12,7 +12,7 @@ schema AppJsFile extends File { impl AppJsFile { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AppJsFile { + pub fn __all__(db: JavascriptDB) -> *AppJsFile { for (tmp in File(db)) { if (tmp.getRelativePath() = "app.js") { yield AppJsFile { @@ -36,7 +36,7 @@ schema AppRegistrationExpression extends CallExpression { impl AppRegistrationExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AppRegistrationExpression { + pub fn __all__(db: JavascriptDB) -> *AppRegistrationExpression { for (tmp in CallExpression(db)) { for (appIdentifier in Identifier(db), location in Location(db), @@ -66,7 +66,7 @@ schema AppObject extends ObjectLiteralExpression { impl AppObject { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AppObject { + pub fn __all__(db: JavascriptDB) -> *AppObject { for (tmp in ObjectLiteralExpression(db)) { for (appRegistrationExpression in AppRegistrationExpression(db)) { if (tmp.key_eq(appRegistrationExpression.getArgument(0))) { @@ -88,7 +88,7 @@ schema PageRegistrationExpression extends CallExpression { impl PageRegistrationExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PageRegistrationExpression { + pub fn __all__(db: JavascriptDB) -> *PageRegistrationExpression { for (tmp in CallExpression(db)) { for (pageIdentifier in Identifier(db)) { if (pageIdentifier.key_eq(tmp.getExpression())) { @@ -112,7 +112,7 @@ schema PageObject extends ObjectLiteralExpression { impl PageObject { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PageObject { + pub fn __all__(db: JavascriptDB) -> *PageObject { for (tmp in ObjectLiteralExpression(db)) { for (pageRegistrationExpression in PageRegistrationExpression(db)) { if (tmp.key_eq(pageRegistrationExpression.getArgument(0))) { @@ -134,7 +134,7 @@ schema ComponentRegistrationExpression extends CallExpression { impl ComponentRegistrationExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ComponentRegistrationExpression { + pub fn __all__(db: JavascriptDB) -> *ComponentRegistrationExpression { for (tmp in CallExpression(db)) { for (componentIdentifier in Identifier(db)) { if (componentIdentifier.key_eq(tmp.getExpression())) { @@ -158,7 +158,7 @@ schema ComponentObject extends ObjectLiteralExpression { impl ComponentObject { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ComponentObject { + pub fn __all__(db: JavascriptDB) -> *ComponentObject { for (tmp in ObjectLiteralExpression(db)) { for (componentRegistrationExpression in ComponentRegistrationExpression(db)) { if (tmp.key_eq(componentRegistrationExpression.getArgument(0))) { @@ -180,7 +180,7 @@ schema MiniObject extends ObjectLiteralExpression { impl MiniObject { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MiniObject { + pub fn __all__(db: JavascriptDB) -> *MiniObject { for (tmp in ObjectLiteralExpression(db)) { for (appObject in AppObject(db)) { if (tmp.key_eq(appObject)) { @@ -216,7 +216,7 @@ schema ApiCallExpression extends CallExpression { impl ApiCallExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ApiCallExpression { + pub fn __all__(db: JavascriptDB) -> *ApiCallExpression { for (tmp in CallExpression(db)) { for (accessExpression in AccessExpression(db), myIdentifier in Identifier(db)) { @@ -243,7 +243,7 @@ schema MiniCallExpression extends CallExpression { impl MiniCallExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MiniCallExpression { + pub fn __all__(db: JavascriptDB) -> *MiniCallExpression { for (tmp in CallExpression(db)) { yield MiniCallExpression { id : tmp.id diff --git a/language/javascript/lib/BasicBlock.gdl b/language/javascript/lib/BasicBlock.gdl index d4ba84aa..0a485fd4 100644 --- a/language/javascript/lib/BasicBlock.gdl +++ b/language/javascript/lib/BasicBlock.gdl @@ -9,7 +9,7 @@ schema BasicBlock extends ControlFlowNode { impl BasicBlock { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BasicBlock { + pub fn __all__(db: JavascriptDB) -> *BasicBlock { for (cfn in ControlFlowNode(db)) { // CfgEntryNode is a standalone BB for (cfgEntryNode in CfgEntryNode(db)) { diff --git a/language/javascript/lib/Class.gdl b/language/javascript/lib/Class.gdl index 02b399b6..ec06da5c 100644 --- a/language/javascript/lib/Class.gdl +++ b/language/javascript/lib/Class.gdl @@ -12,7 +12,7 @@ schema ClassLikeDeclaration extends Node { impl ClassLikeDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassLikeDeclaration { + pub fn __all__(db: JavascriptDB) -> *ClassLikeDeclaration { for (tmp in Node(db)) { if (isClassLikeDeclaration(tmp)) { yield ClassLikeDeclaration { @@ -32,7 +32,7 @@ schema ClassDeclaration extends ClassLikeDeclaration { impl ClassDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassDeclaration { + pub fn __all__(db: JavascriptDB) -> *ClassDeclaration { for (tmp in ClassLikeDeclaration(db)) { if (isClassDeclaration(Node {id: tmp.id})) { yield ClassDeclaration { @@ -52,7 +52,7 @@ schema ClassExpressionDeclaration extends ClassLikeDeclaration { impl ClassExpressionDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassExpressionDeclaration { + pub fn __all__(db: JavascriptDB) -> *ClassExpressionDeclaration { for (tmp in ClassLikeDeclaration(db)) { if (isClassExpression(Node {id: tmp.id})) { yield ClassExpressionDeclaration { @@ -72,7 +72,7 @@ schema ClassElement extends Node { impl ClassElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassElement { + pub fn __all__(db: JavascriptDB) -> *ClassElement { for (tmp in Node(db)) { if (isClassElement(tmp)) { yield ClassElement { @@ -92,7 +92,7 @@ schema PropertyDeclaration extends ClassElement { impl PropertyDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PropertyDeclaration { + pub fn __all__(db: JavascriptDB) -> *PropertyDeclaration { for (tmp in ClassElement(db)) { if (tmp.getKind() = 166) { yield PropertyDeclaration { @@ -266,7 +266,7 @@ schema MethodElement extends ClassElement { impl MethodElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MethodElement { + pub fn __all__(db: JavascriptDB) -> *MethodElement { for (tmp in ClassElement(db)) { if (tmp.getKind() = 168) { yield MethodElement { @@ -286,7 +286,7 @@ schema ClassStaticBlockElement extends ClassElement { impl ClassStaticBlockElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassStaticBlockElement { + pub fn __all__(db: JavascriptDB) -> *ClassStaticBlockElement { for (tmp in ClassElement(db)) { // ClassStaticBlockDeclaration if (tmp.getKind() = 169) { @@ -307,7 +307,7 @@ schema ConstructorElement extends ClassElement { impl ConstructorElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConstructorElement { + pub fn __all__(db: JavascriptDB) -> *ConstructorElement { for (tmp in ClassElement(db)) { if (tmp.getKind() = 170) { yield ConstructorElement { @@ -327,7 +327,7 @@ schema AccessorElement extends ClassElement { impl AccessorElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AccessorElement { + pub fn __all__(db: JavascriptDB) -> *AccessorElement { for (tmp in ClassElement(db)) { if (isAccessor(Node {id: tmp.id})) { yield AccessorElement { @@ -347,7 +347,7 @@ schema GetAccessorElement extends AccessorElement { impl GetAccessorElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GetAccessorElement { + pub fn __all__(db: JavascriptDB) -> *GetAccessorElement { for (tmp in AccessorElement(db)) { if (tmp.getKind() = 171) { yield GetAccessorElement { @@ -367,7 +367,7 @@ schema SetAccessorElement extends AccessorElement { impl SetAccessorElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SetAccessorElement { + pub fn __all__(db: JavascriptDB) -> *SetAccessorElement { for (tmp in AccessorElement(db)) { if (tmp.getKind() = 172) { yield SetAccessorElement { @@ -387,7 +387,7 @@ schema IndexSignature extends ClassElement { impl IndexSignature { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IndexSignature { + pub fn __all__(db: JavascriptDB) -> *IndexSignature { for (tmp in ClassElement(db)) { if (tmp.getKind() = 175) { yield IndexSignature { @@ -407,7 +407,7 @@ schema SemicolonClassElement extends ClassElement { impl SemicolonClassElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SemicolonClassElement { + pub fn __all__(db: JavascriptDB) -> *SemicolonClassElement { for (tmp in ClassElement(db)) { if (tmp.getKind() = 233) { yield SemicolonClassElement { diff --git a/language/javascript/lib/Comment.gdl b/language/javascript/lib/Comment.gdl index 8a6fa326..19b756c0 100644 --- a/language/javascript/lib/Comment.gdl +++ b/language/javascript/lib/Comment.gdl @@ -13,7 +13,7 @@ schema Comment extends CommentDO { impl Comment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Comment { + pub fn __all__(db: JavascriptDB) -> *Comment { for (tmp in CommentDO(db)) { yield Comment { oid : tmp.oid, diff --git a/language/javascript/lib/Completion.gdl b/language/javascript/lib/Completion.gdl index 4e6e7554..93079c52 100644 --- a/language/javascript/lib/Completion.gdl +++ b/language/javascript/lib/Completion.gdl @@ -8,7 +8,7 @@ impl Completion { @inline pub fn __all__() -> *Completion { yield Completion {id: 1001, name: "NormalCompletion"} - yield Completion {id: 1101, name: "ReturnCompletion"} + yield Completion {id: 1101, name: "ReturnCompletion"} // BooleanCompletion yield Completion {id: 1201, name: "BooleanCompletion"} yield Completion {id: 1202, name: "TrueBooleanCompletion"} diff --git a/language/javascript/lib/ControlFlowGraph.gdl b/language/javascript/lib/ControlFlowGraph.gdl index 5925f35b..0daff434 100644 --- a/language/javascript/lib/ControlFlowGraph.gdl +++ b/language/javascript/lib/ControlFlowGraph.gdl @@ -12,7 +12,7 @@ schema CfgEntryNode extends CfgEntryNodeDO { impl CfgEntryNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CfgEntryNode { + pub fn __all__(db: JavascriptDB) -> *CfgEntryNode { for (tmp in CfgEntryNodeDO(db)) { for (cfgEntryNodeDO in CfgEntryNodeDO(db)) { if (tmp = cfgEntryNodeDO) { @@ -43,7 +43,7 @@ schema CfgExitNode extends CfgExitNodeDO { impl CfgExitNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CfgExitNode { + pub fn __all__(db: JavascriptDB) -> *CfgExitNode { for (tmp in CfgExitNodeDO(db)) { yield CfgExitNode { oid : tmp.oid, @@ -71,7 +71,7 @@ schema SyntheticCfgNode { impl SyntheticCfgNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SyntheticCfgNode { + pub fn __all__(db: JavascriptDB) -> *SyntheticCfgNode { for (cfgEntryNode in CfgEntryNode(db)) { yield SyntheticCfgNode {id : cfgEntryNode.oid} } @@ -109,7 +109,7 @@ schema ControlFlowNode { impl ControlFlowNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ControlFlowNode { + pub fn __all__(db: JavascriptDB) -> *ControlFlowNode { for (node in Node(db)) { yield ControlFlowNode {id : node.id} } @@ -362,7 +362,7 @@ schema PostOrderNode extends ControlFlowNode { impl PostOrderNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PostOrderNode { + pub fn __all__(db: JavascriptDB) -> *PostOrderNode { for (tmp in ControlFlowNode(db)) { if (isPostOrderNode(tmp)) { yield PostOrderNode { diff --git a/language/javascript/lib/DOClass.gdl b/language/javascript/lib/DOClass.gdl index 6acbbf13..233db9a5 100644 --- a/language/javascript/lib/DOClass.gdl +++ b/language/javascript/lib/DOClass.gdl @@ -17,7 +17,7 @@ impl LocationDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *LocationDO { - for (tmp in db.location) { + for (tmp in db.location) { yield LocationDO { oid : tmp.oid, file_oid : tmp.file_oid, @@ -27,7 +27,7 @@ impl LocationDO { end_column_number : tmp.end_column_number, text : tmp.text } - } + } } pub fn getFileOid(self) -> int { @@ -66,14 +66,14 @@ impl NumberOfLinesDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *NumberOfLinesDO { - for (tmp in db.number_of_lines) { + for (tmp in db.number_of_lines) { yield NumberOfLinesDO { location_oid : tmp.location_oid, lines : tmp.lines, code_lines : tmp.code_lines, comment_lines : tmp.comment_lines } - } + } } pub fn getLines(self) -> int { @@ -101,7 +101,7 @@ impl FileDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *FileDO { - for (tmp in db.file) { + for (tmp in db.file) { yield FileDO { oid : tmp.oid, name : tmp.name, @@ -109,7 +109,7 @@ impl FileDO { relative_path : tmp.relative_path, location_oid : tmp.location_oid } - } + } } pub fn getName(self) -> string { @@ -140,14 +140,14 @@ impl DirectoryDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *DirectoryDO { - for (tmp in db.directory) { + for (tmp in db.directory) { yield DirectoryDO { oid : tmp.oid, name : tmp.name, relative_path : tmp.relative_path, location_oid : tmp.location_oid } - } + } } pub fn getName(self) -> string { @@ -172,12 +172,12 @@ impl DirectoryHierarchyDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *DirectoryHierarchyDO { - for (tmp in db.directory_hierarchy) { + for (tmp in db.directory_hierarchy) { yield DirectoryHierarchyDO { parent_oid : tmp.parent_oid, child_oid : tmp.child_oid } - } + } } pub fn getParentOid(self) -> int { @@ -195,13 +195,13 @@ impl TopLevelDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *TopLevelDO { - for (tmp in db.top_level) { + for (tmp in db.top_level) { yield TopLevelDO { oid : tmp.oid, kind : tmp.kind, location_oid : tmp.location_oid } - } + } } pub fn getKind(self) -> int { @@ -225,7 +225,7 @@ impl NodeDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *NodeDO { - for (tmp in db.node) { + for (tmp in db.node) { yield NodeDO { oid : tmp.oid, kind : tmp.kind, @@ -233,7 +233,7 @@ impl NodeDO { index : tmp.index, location_oid : tmp.location_oid } - } + } } pub fn getKind(self) -> int { @@ -262,12 +262,12 @@ impl LiteralDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *LiteralDO { - for (tmp in db.literal) { + for (tmp in db.literal) { yield LiteralDO { oid : tmp.oid, value : tmp.value } - } + } } pub fn getValue(self) -> string { @@ -284,12 +284,12 @@ impl BindingElementPropertyNameDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *BindingElementPropertyNameDO { - for (tmp in db.binding_element_property_name) { + for (tmp in db.binding_element_property_name) { yield BindingElementPropertyNameDO { oid : tmp.oid, property_name_oid : tmp.property_name_oid } - } + } } pub fn getPropertyNameOid(self) -> int { @@ -306,12 +306,12 @@ impl BindingElementNameDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *BindingElementNameDO { - for (tmp in db.binding_element_name) { + for (tmp in db.binding_element_name) { yield BindingElementNameDO { oid : tmp.oid, name_oid : tmp.name_oid } - } + } } pub fn getNameOid(self) -> int { @@ -328,12 +328,12 @@ impl BindingElementInitializerDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *BindingElementInitializerDO { - for (tmp in db.binding_element_initializer) { + for (tmp in db.binding_element_initializer) { yield BindingElementInitializerDO { oid : tmp.oid, initializer_oid : tmp.initializer_oid } - } + } } pub fn getInitializerOid(self) -> int { @@ -351,13 +351,13 @@ impl ClassLikeDeclarationDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *ClassLikeDeclarationDO { - for (tmp in db.class_like_declaration) { + for (tmp in db.class_like_declaration) { yield ClassLikeDeclarationDO { oid : tmp.oid, kind : tmp.kind, name : tmp.name } - } + } } pub fn getKind(self) -> int { @@ -379,13 +379,13 @@ impl FunctionLikeDeclarationDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *FunctionLikeDeclarationDO { - for (tmp in db.function_like_declaration) { + for (tmp in db.function_like_declaration) { yield FunctionLikeDeclarationDO { oid : tmp.oid, kind : tmp.kind, name : tmp.name } - } + } } pub fn getKind(self) -> int { @@ -406,12 +406,12 @@ impl FunctionEnclosingNodeDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *FunctionEnclosingNodeDO { - for (tmp in db.function_enclosing_node) { + for (tmp in db.function_enclosing_node) { yield FunctionEnclosingNodeDO { node_oid : tmp.node_oid, function_oid : tmp.function_oid } - } + } } pub fn getFunctionOid(self) -> int { @@ -428,12 +428,12 @@ impl ModifierDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *ModifierDO { - for (tmp in db.modifier) { + for (tmp in db.modifier) { yield ModifierDO { oid : tmp.oid, index : tmp.index } - } + } } pub fn getIndex(self) -> int { @@ -451,13 +451,13 @@ impl SymbolDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *SymbolDO { - for (tmp in db.symbol_) { + for (tmp in db.symbol_) { yield SymbolDO { oid : tmp.oid, name : tmp.name, description : tmp.description } - } + } } pub fn getName(self) -> string { @@ -478,12 +478,12 @@ impl NodeSymbolDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *NodeSymbolDO { - for (tmp in db.node_symbol) { + for (tmp in db.node_symbol) { yield NodeSymbolDO { node_oid : tmp.node_oid, symbol_oid : tmp.symbol_oid } - } + } } pub fn getSymbolOid(self) -> int { @@ -500,12 +500,12 @@ impl ShorthandAssignmentValueSymbolDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *ShorthandAssignmentValueSymbolDO { - for (tmp in db.shorthand_assignment_value_symbol) { + for (tmp in db.shorthand_assignment_value_symbol) { yield ShorthandAssignmentValueSymbolDO { node_oid : tmp.node_oid, symbol_oid : tmp.symbol_oid } - } + } } pub fn getSymbolOid(self) -> int { @@ -522,12 +522,12 @@ impl CallSiteDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *CallSiteDO { - for (tmp in db.call_site) { + for (tmp in db.call_site) { yield CallSiteDO { invoke_expression_oid : tmp.invoke_expression_oid, callee_oid : tmp.callee_oid } - } + } } pub fn getCalleeOid(self) -> int { @@ -544,12 +544,12 @@ impl CfgEntryNodeDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *CfgEntryNodeDO { - for (tmp in db.cfg_entry_node) { + for (tmp in db.cfg_entry_node) { yield CfgEntryNodeDO { oid : tmp.oid, ast_node_oid : tmp.ast_node_oid } - } + } } pub fn getAstNodeOid(self) -> int { @@ -566,12 +566,12 @@ impl CfgExitNodeDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *CfgExitNodeDO { - for (tmp in db.cfg_exit_node) { + for (tmp in db.cfg_exit_node) { yield CfgExitNodeDO { oid : tmp.oid, ast_node_oid : tmp.ast_node_oid } - } + } } pub fn getAstNodeOid(self) -> int { @@ -589,13 +589,13 @@ impl CommentDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *CommentDO { - for (tmp in db.comment) { + for (tmp in db.comment) { yield CommentDO { oid : tmp.oid, kind : tmp.kind, location_oid : tmp.location_oid } - } + } } pub fn getKind(self) -> int { @@ -618,14 +618,14 @@ impl NodeCommentDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *NodeCommentDO { - for (tmp in db.node_comment) { + for (tmp in db.node_comment) { yield NodeCommentDO { oid : tmp.oid, node_oid : tmp.node_oid, comment_oid : tmp.comment_oid, type : tmp.type } - } + } } pub fn getNodeOid(self) -> int { @@ -651,13 +651,13 @@ impl JsParseErrorDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *JsParseErrorDO { - for (tmp in db.js_parse_error) { + for (tmp in db.js_parse_error) { yield JsParseErrorDO { oid : tmp.oid, message : tmp.message, line : tmp.line } - } + } } pub fn getMessage(self) -> string { @@ -679,13 +679,13 @@ impl MetadataDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *MetadataDO { - for (tmp in db.metadata) { + for (tmp in db.metadata) { yield MetadataDO { oid : tmp.oid, version : tmp.version, created_time : tmp.created_time } - } + } } pub fn getVersion(self) -> string { @@ -708,14 +708,14 @@ impl IgnoredPathDO { @data_constraint @inline pub fn __all__(db: JavascriptDB) -> *IgnoredPathDO { - for (tmp in db.ignored_path) { + for (tmp in db.ignored_path) { yield IgnoredPathDO { oid : tmp.oid, path_kind : tmp.path_kind, path : tmp.path, ignore_kind : tmp.ignore_kind } - } + } } pub fn getPathKind(self) -> int { diff --git a/language/javascript/lib/DataFlowGraph.gdl b/language/javascript/lib/DataFlowGraph.gdl index 8d7600fc..e7d1d7a6 100644 --- a/language/javascript/lib/DataFlowGraph.gdl +++ b/language/javascript/lib/DataFlowGraph.gdl @@ -9,7 +9,7 @@ schema DataFlowNode extends Node { impl DataFlowNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DataFlowNode { + pub fn __all__(db: JavascriptDB) -> *DataFlowNode { for (tmp in Node(db)) { if (isDataFlowNode(tmp)) { yield DataFlowNode { diff --git a/language/javascript/lib/Declaration.gdl b/language/javascript/lib/Declaration.gdl index 1f699542..5a7354a4 100644 --- a/language/javascript/lib/Declaration.gdl +++ b/language/javascript/lib/Declaration.gdl @@ -12,7 +12,7 @@ schema TypeParameter extends Node { impl TypeParameter { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeParameter { + pub fn __all__(db: JavascriptDB) -> *TypeParameter { for (tmp in Node(db)) { if (isTypeParameter(tmp)) { yield TypeParameter { @@ -32,7 +32,7 @@ schema Parameter extends Node { impl Parameter { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Parameter { + pub fn __all__(db: JavascriptDB) -> *Parameter { for (tmp in Node(db)) { if (isParameter(tmp)) { yield Parameter { @@ -159,7 +159,7 @@ schema VariableDeclaration extends Node { impl VariableDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VariableDeclaration { + pub fn __all__(db: JavascriptDB) -> *VariableDeclaration { for (tmp in Node(db)) { if (isVariableDeclaration(tmp)) { yield VariableDeclaration { @@ -342,7 +342,7 @@ schema VariableDeclarationList extends Node { impl VariableDeclarationList { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VariableDeclarationList { + pub fn __all__(db: JavascriptDB) -> *VariableDeclarationList { for (tmp in Node(db)) { if (isVariableDeclarationList(tmp)) { yield VariableDeclarationList { @@ -397,7 +397,7 @@ schema BindingElement extends Node { impl BindingElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BindingElement { + pub fn __all__(db: JavascriptDB) -> *BindingElement { for (tmp in Node(db)) { if (isBindingElement(tmp)) { yield BindingElement { @@ -533,7 +533,7 @@ schema ArrayBindingElement extends Node { impl ArrayBindingElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrayBindingElement { + pub fn __all__(db: JavascriptDB) -> *ArrayBindingElement { for (tmp in Node(db)) { if (isArrayBindingElement(tmp)) { yield ArrayBindingElement { @@ -553,7 +553,7 @@ schema BindingPattern extends Node { impl BindingPattern { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BindingPattern { + pub fn __all__(db: JavascriptDB) -> *BindingPattern { for (tmp in Node(db)) { if (isBindingPattern(tmp)) { yield BindingPattern { @@ -591,7 +591,7 @@ schema BindingName extends Node { impl BindingName { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BindingName { + pub fn __all__(db: JavascriptDB) -> *BindingName { for (tmp in Node(db)) { if (isBindingName(tmp)) { yield BindingName { @@ -621,7 +621,7 @@ schema ObjectBindingPattern extends BindingPattern { impl ObjectBindingPattern { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ObjectBindingPattern { + pub fn __all__(db: JavascriptDB) -> *ObjectBindingPattern { for (tmp in BindingPattern(db)) { if (isObjectBindingPattern(Node {id: tmp.id})) { yield ObjectBindingPattern { @@ -688,7 +688,7 @@ schema ArrayBindingPattern extends BindingPattern { impl ArrayBindingPattern { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrayBindingPattern { + pub fn __all__(db: JavascriptDB) -> *ArrayBindingPattern { for (tmp in BindingPattern(db)) { if (isArrayBindingPattern(Node {id: tmp.id})) { yield ArrayBindingPattern { @@ -739,7 +739,7 @@ schema EnumMember extends Node { impl EnumMember { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EnumMember { + pub fn __all__(db: JavascriptDB) -> *EnumMember { for (tmp in Node(db)) { if (isEnumMember(tmp)) { yield EnumMember { diff --git a/language/javascript/lib/DefUse.gdl b/language/javascript/lib/DefUse.gdl index ff67131b..75909f08 100644 --- a/language/javascript/lib/DefUse.gdl +++ b/language/javascript/lib/DefUse.gdl @@ -9,7 +9,7 @@ schema VarRef extends BindingName { impl VarRef { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VarRef { + pub fn __all__(db: JavascriptDB) -> *VarRef { for (tmp in BindingName(db)) { yield VarRef { id : tmp.id @@ -29,7 +29,7 @@ schema RefExpr extends Node { impl RefExpr { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RefExpr { + pub fn __all__(db: JavascriptDB) -> *RefExpr { for (tmp in Node(db)) { for (varRef in VarRef(db)) { if (tmp.key_eq(varRef)) { @@ -95,7 +95,7 @@ schema LValue extends RefExpr { impl LValue { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LValue { + pub fn __all__(db: JavascriptDB) -> *LValue { for (tmp in RefExpr(db)) { if (isLValue(tmp)) { yield LValue { @@ -139,7 +139,7 @@ schema RValue extends RefExpr { impl RValue { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RValue { + pub fn __all__(db: JavascriptDB) -> *RValue { for (tmp in RefExpr(db)) { if (isRValue(tmp)) { yield RValue { @@ -159,7 +159,7 @@ schema VarUse extends ControlFlowNode { impl VarUse { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VarUse { + pub fn __all__(db: JavascriptDB) -> *VarUse { for (controlFlowNode in ControlFlowNode(db)) { if (isRValue(controlFlowNode.to())) { yield VarUse { @@ -275,7 +275,7 @@ schema VarDef extends ControlFlowNode { impl VarDef { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VarDef { + pub fn __all__(db: JavascriptDB) -> *VarDef { for (tmp in ControlFlowNode(db)) { if (defn(tmp, __all_data__)) { yield VarDef { diff --git a/language/javascript/lib/Expression.gdl b/language/javascript/lib/Expression.gdl index bc7b59ad..ea1e6600 100644 --- a/language/javascript/lib/Expression.gdl +++ b/language/javascript/lib/Expression.gdl @@ -12,7 +12,7 @@ schema Expression extends Node { impl Expression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Expression { + pub fn __all__(db: JavascriptDB) -> *Expression { for (tmp in Node(db)) { if (isExpression(tmp)) { yield Expression { @@ -32,7 +32,7 @@ schema ArrowFunctionExpression extends Expression { impl ArrowFunctionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrowFunctionExpression { + pub fn __all__(db: JavascriptDB) -> *ArrowFunctionExpression { for (tmp in Expression(db)) { if (isArrowFunction(Node {id: tmp.id})) { yield ArrowFunctionExpression { @@ -52,7 +52,7 @@ schema BinaryExpression extends Expression { impl BinaryExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryExpression { + pub fn __all__(db: JavascriptDB) -> *BinaryExpression { for (tmp in Expression(db)) { if (isBinaryExpression(Node {id: tmp.id})) { yield BinaryExpression { @@ -137,7 +137,7 @@ schema ExponentiationExpression extends BinaryExpression { impl ExponentiationExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExponentiationExpression { + pub fn __all__(db: JavascriptDB) -> *ExponentiationExpression { for (tmp in BinaryExpression(db)) { if (isExponentiationExpression(Node {id: tmp.id})) { yield ExponentiationExpression { @@ -157,7 +157,7 @@ schema MultiplicativeExpression extends BinaryExpression { impl MultiplicativeExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MultiplicativeExpression { + pub fn __all__(db: JavascriptDB) -> *MultiplicativeExpression { for (tmp in BinaryExpression(db)) { if (isMultiplicativeExpression(Node {id: tmp.id})) { yield MultiplicativeExpression { @@ -177,7 +177,7 @@ schema MultiplicationExpression extends MultiplicativeExpression { impl MultiplicationExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MultiplicationExpression { + pub fn __all__(db: JavascriptDB) -> *MultiplicationExpression { for (tmp in MultiplicativeExpression(db)) { if (isMultiplicationExpression(Node {id: tmp.id})) { yield MultiplicationExpression { @@ -197,7 +197,7 @@ schema DivisionExpression extends MultiplicativeExpression { impl DivisionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DivisionExpression { + pub fn __all__(db: JavascriptDB) -> *DivisionExpression { for (tmp in MultiplicativeExpression(db)) { if (isDivisionExpression(Node {id: tmp.id})) { yield DivisionExpression { @@ -217,7 +217,7 @@ schema RemainderExpression extends MultiplicativeExpression { impl RemainderExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RemainderExpression { + pub fn __all__(db: JavascriptDB) -> *RemainderExpression { for (tmp in MultiplicativeExpression(db)) { if (isRemainderExpression(Node {id: tmp.id})) { yield RemainderExpression { @@ -237,7 +237,7 @@ schema AdditiveExpression extends BinaryExpression { impl AdditiveExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AdditiveExpression { + pub fn __all__(db: JavascriptDB) -> *AdditiveExpression { for (tmp in BinaryExpression(db)) { if (isAdditiveExpression(Node {id: tmp.id})) { yield AdditiveExpression { @@ -257,7 +257,7 @@ schema AdditionExpression extends AdditiveExpression { impl AdditionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AdditionExpression { + pub fn __all__(db: JavascriptDB) -> *AdditionExpression { for (tmp in AdditiveExpression(db)) { if (isAdditionExpression(Node {id: tmp.id})) { yield AdditionExpression { @@ -277,7 +277,7 @@ schema SubtractionExpression extends AdditiveExpression { impl SubtractionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SubtractionExpression { + pub fn __all__(db: JavascriptDB) -> *SubtractionExpression { for (tmp in AdditiveExpression(db)) { if (isSubtractionExpression(Node {id: tmp.id})) { yield SubtractionExpression { @@ -297,7 +297,7 @@ schema ShiftExpression extends BinaryExpression { impl ShiftExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ShiftExpression { + pub fn __all__(db: JavascriptDB) -> *ShiftExpression { for (tmp in BinaryExpression(db)) { if (isShiftExpression(Node {id: tmp.id})) { yield ShiftExpression { @@ -317,7 +317,7 @@ schema LeftShiftExpression extends ShiftExpression { impl LeftShiftExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LeftShiftExpression { + pub fn __all__(db: JavascriptDB) -> *LeftShiftExpression { for (tmp in ShiftExpression(db)) { if (isLeftShiftExpression(Node {id: tmp.id})) { yield LeftShiftExpression { @@ -337,7 +337,7 @@ schema RightShiftExpression extends ShiftExpression { impl RightShiftExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RightShiftExpression { + pub fn __all__(db: JavascriptDB) -> *RightShiftExpression { for (tmp in ShiftExpression(db)) { if (isRightShiftExpression(Node {id: tmp.id})) { yield RightShiftExpression { @@ -357,7 +357,7 @@ schema UnsignedRightShiftExpression extends ShiftExpression { impl UnsignedRightShiftExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnsignedRightShiftExpression { + pub fn __all__(db: JavascriptDB) -> *UnsignedRightShiftExpression { for (tmp in ShiftExpression(db)) { if (isUnsignedRightShiftExpression(Node {id: tmp.id})) { yield UnsignedRightShiftExpression { @@ -377,7 +377,7 @@ schema RelationalExpression extends BinaryExpression { impl RelationalExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RelationalExpression { + pub fn __all__(db: JavascriptDB) -> *RelationalExpression { for (tmp in BinaryExpression(db)) { if (isRelationalExpression(Node {id: tmp.id})) { yield RelationalExpression { @@ -397,7 +397,7 @@ schema LessThanExpression extends RelationalExpression { impl LessThanExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanExpression { + pub fn __all__(db: JavascriptDB) -> *LessThanExpression { for (tmp in RelationalExpression(db)) { if (isLessThanExpression(Node {id: tmp.id})) { yield LessThanExpression { @@ -417,7 +417,7 @@ schema LessThanEqualsExpression extends RelationalExpression { impl LessThanEqualsExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanEqualsExpression { + pub fn __all__(db: JavascriptDB) -> *LessThanEqualsExpression { for (tmp in RelationalExpression(db)) { if (isLessThanEqualsExpression(Node {id: tmp.id})) { yield LessThanEqualsExpression { @@ -437,7 +437,7 @@ schema GreaterThanExpression extends RelationalExpression { impl GreaterThanExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanExpression { + pub fn __all__(db: JavascriptDB) -> *GreaterThanExpression { for (tmp in RelationalExpression(db)) { if (isGreaterThanExpression(Node {id: tmp.id})) { yield GreaterThanExpression { @@ -457,7 +457,7 @@ schema GreaterThanEqualsExpression extends RelationalExpression { impl GreaterThanEqualsExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanEqualsExpression { + pub fn __all__(db: JavascriptDB) -> *GreaterThanEqualsExpression { for (tmp in RelationalExpression(db)) { if (isGreaterThanEqualsExpression(Node {id: tmp.id})) { yield GreaterThanEqualsExpression { @@ -477,7 +477,7 @@ schema InstanceOfExpression extends RelationalExpression { impl InstanceOfExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InstanceOfExpression { + pub fn __all__(db: JavascriptDB) -> *InstanceOfExpression { for (tmp in RelationalExpression(db)) { if (isInstanceOfExpression(Node {id: tmp.id})) { yield InstanceOfExpression { @@ -497,7 +497,7 @@ schema InExpression extends RelationalExpression { impl InExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InExpression { + pub fn __all__(db: JavascriptDB) -> *InExpression { for (tmp in RelationalExpression(db)) { if (isInExpression(Node {id: tmp.id})) { yield InExpression { @@ -517,7 +517,7 @@ schema EqualityTestExpression extends BinaryExpression { impl EqualityTestExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualityTestExpression { + pub fn __all__(db: JavascriptDB) -> *EqualityTestExpression { for (tmp in BinaryExpression(db)) { if (isEqualityTestExpression(Node {id: tmp.id})) { yield EqualityTestExpression { @@ -537,7 +537,7 @@ schema EqualityExpression extends EqualityTestExpression { impl EqualityExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualityExpression { + pub fn __all__(db: JavascriptDB) -> *EqualityExpression { for (tmp in EqualityTestExpression(db)) { if (isEqualityExpression(Node {id: tmp.id})) { yield EqualityExpression { @@ -557,7 +557,7 @@ schema InequalityExpression extends EqualityTestExpression { impl InequalityExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InequalityExpression { + pub fn __all__(db: JavascriptDB) -> *InequalityExpression { for (tmp in EqualityTestExpression(db)) { if (isInequalityExpression(Node {id: tmp.id})) { yield InequalityExpression { @@ -577,7 +577,7 @@ schema StrictEqualityExpression extends EqualityTestExpression { impl StrictEqualityExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StrictEqualityExpression { + pub fn __all__(db: JavascriptDB) -> *StrictEqualityExpression { for (tmp in EqualityTestExpression(db)) { if (isStrictEqualityExpression(Node {id: tmp.id})) { yield StrictEqualityExpression { @@ -597,7 +597,7 @@ schema StrictInequalityExpression extends EqualityTestExpression { impl StrictInequalityExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StrictInequalityExpression { + pub fn __all__(db: JavascriptDB) -> *StrictInequalityExpression { for (tmp in EqualityTestExpression(db)) { if (isStrictInequalityExpression(Node {id: tmp.id})) { yield StrictInequalityExpression { @@ -617,7 +617,7 @@ schema StrictEqualityTestExpression extends EqualityTestExpression { impl StrictEqualityTestExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StrictEqualityTestExpression { + pub fn __all__(db: JavascriptDB) -> *StrictEqualityTestExpression { for (tmp in EqualityTestExpression(db)) { if (isStrictEqualityTestExpression(Node {id: tmp.id})) { yield StrictEqualityTestExpression { @@ -637,7 +637,7 @@ schema NonStrictEqualityTestExpression extends EqualityTestExpression { impl NonStrictEqualityTestExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NonStrictEqualityTestExpression { + pub fn __all__(db: JavascriptDB) -> *NonStrictEqualityTestExpression { for (tmp in EqualityTestExpression(db)) { if (isNonStrictEqualityTestExpression(Node {id: tmp.id})) { yield NonStrictEqualityTestExpression { @@ -657,7 +657,7 @@ schema BinaryBitwiseExpression extends BinaryExpression { impl BinaryBitwiseExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryBitwiseExpression { + pub fn __all__(db: JavascriptDB) -> *BinaryBitwiseExpression { for (tmp in BinaryExpression(db)) { if (isBinaryBitwiseExpression(Node {id: tmp.id})) { yield BinaryBitwiseExpression { @@ -677,7 +677,7 @@ schema BitwiseAndExpression extends BinaryBitwiseExpression { impl BitwiseAndExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseAndExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseAndExpression { for (tmp in BinaryBitwiseExpression(db)) { if (isBitwiseAndExpression(Node {id: tmp.id})) { yield BitwiseAndExpression { @@ -697,7 +697,7 @@ schema BitwiseOrExpression extends BinaryBitwiseExpression { impl BitwiseOrExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseOrExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseOrExpression { for (tmp in BinaryBitwiseExpression(db)) { if (isBitwiseOrExpression(Node {id: tmp.id})) { yield BitwiseOrExpression { @@ -717,7 +717,7 @@ schema BitwiseXorExpression extends BinaryBitwiseExpression { impl BitwiseXorExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseXorExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseXorExpression { for (tmp in BinaryBitwiseExpression(db)) { if (isBitwiseXorExpression(Node {id: tmp.id})) { yield BitwiseXorExpression { @@ -734,7 +734,7 @@ schema BinaryLogicalExpression extends BinaryExpression { impl BinaryLogicalExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryLogicalExpression { + pub fn __all__(db: JavascriptDB) -> *BinaryLogicalExpression { for (tmp in BinaryExpression(db)) { if (isBinaryLogicalExpression(Node {id: tmp.id})) { yield BinaryLogicalExpression { @@ -754,7 +754,7 @@ schema LogicalAndExpression extends BinaryLogicalExpression { impl LogicalAndExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LogicalAndExpression { + pub fn __all__(db: JavascriptDB) -> *LogicalAndExpression { for (tmp in BinaryLogicalExpression(db)) { if (isLogicalAndExpression(Node {id: tmp.id})) { yield LogicalAndExpression { @@ -774,7 +774,7 @@ schema LogicalOrExpression extends BinaryLogicalExpression { impl LogicalOrExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LogicalOrExpression { + pub fn __all__(db: JavascriptDB) -> *LogicalOrExpression { for (tmp in BinaryLogicalExpression(db)) { if (isLogicalOrExpression(Node {id: tmp.id})) { yield LogicalOrExpression { @@ -794,7 +794,7 @@ schema NullishCoalescingExpression extends BinaryLogicalExpression { impl NullishCoalescingExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NullishCoalescingExpression { + pub fn __all__(db: JavascriptDB) -> *NullishCoalescingExpression { for (tmp in BinaryLogicalExpression(db)) { if (isNullishCoalescingExpression(Node {id: tmp.id})) { yield NullishCoalescingExpression { @@ -814,7 +814,7 @@ schema AssignmentExpression extends BinaryExpression { impl AssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *AssignmentExpression { for (tmp in BinaryExpression(db)) { if (isAssignmentExpression(Node {id: tmp.id})) { yield AssignmentExpression { @@ -834,7 +834,7 @@ schema SimpleAssignmentExpression extends AssignmentExpression { impl SimpleAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SimpleAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *SimpleAssignmentExpression { for (tmp in AssignmentExpression(db)) { if (isSimpleAssignmentExpression(Node {id: tmp.id})) { yield SimpleAssignmentExpression { @@ -856,7 +856,7 @@ schema CompoundAssignmentExpression extends AssignmentExpression { impl CompoundAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CompoundAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *CompoundAssignmentExpression { for (tmp in AssignmentExpression(db)) { if (isCompoundAssignmentExpression(Node {id: tmp.id})) { yield CompoundAssignmentExpression { @@ -876,7 +876,7 @@ schema AdditionAssignmentExpression extends CompoundAssignmentExpression { impl AdditionAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AdditionAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *AdditionAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isAdditionAssignmentExpression(Node {id: tmp.id})) { yield AdditionAssignmentExpression { @@ -896,7 +896,7 @@ schema SubtractionAssignmentExpression extends CompoundAssignmentExpression { impl SubtractionAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SubtractionAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *SubtractionAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isSubtractionAssignmentExpression(Node {id: tmp.id})) { yield SubtractionAssignmentExpression { @@ -916,7 +916,7 @@ schema ExponentiationAssignmentExpression extends CompoundAssignmentExpression { impl ExponentiationAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExponentiationAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *ExponentiationAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isExponentiationAssignmentExpression(Node {id: tmp.id})) { yield ExponentiationAssignmentExpression { @@ -936,7 +936,7 @@ schema MultiplicationAssignmentExpression extends CompoundAssignmentExpression { impl MultiplicationAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MultiplicationAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *MultiplicationAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isMultiplicationAssignmentExpression(Node {id: tmp.id})) { yield MultiplicationAssignmentExpression { @@ -956,7 +956,7 @@ schema DivisionAssignmentExpression extends CompoundAssignmentExpression { impl DivisionAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DivisionAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *DivisionAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isDivisionAssignmentExpression(Node {id: tmp.id})) { yield DivisionAssignmentExpression { @@ -976,7 +976,7 @@ schema RemainderAssignmentExpression extends CompoundAssignmentExpression { impl RemainderAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RemainderAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *RemainderAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isRemainderAssignmentExpression(Node {id: tmp.id})) { yield RemainderAssignmentExpression { @@ -996,7 +996,7 @@ schema BitwiseAndAssignmentExpression extends CompoundAssignmentExpression { impl BitwiseAndAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseAndAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseAndAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isBitwiseAndAssignmentExpression(Node {id: tmp.id})) { yield BitwiseAndAssignmentExpression { @@ -1016,7 +1016,7 @@ schema BitwiseOrAssignmentExpression extends CompoundAssignmentExpression { impl BitwiseOrAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseOrAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseOrAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isBitwiseOrAssignmentExpression(Node {id: tmp.id})) { yield BitwiseOrAssignmentExpression { @@ -1036,7 +1036,7 @@ schema BitwiseXorAssignmentExpression extends CompoundAssignmentExpression { impl BitwiseXorAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseXorAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseXorAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isBitwiseXorAssignmentExpression(Node {id: tmp.id})) { yield BitwiseXorAssignmentExpression { @@ -1056,7 +1056,7 @@ schema LeftShiftAssignmentExpression extends CompoundAssignmentExpression { impl LeftShiftAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LeftShiftAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *LeftShiftAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isLeftShiftAssignmentExpression(Node {id: tmp.id})) { yield LeftShiftAssignmentExpression { @@ -1076,7 +1076,7 @@ schema RightShiftAssignmentExpression extends CompoundAssignmentExpression { impl RightShiftAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RightShiftAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *RightShiftAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isRightShiftAssignmentExpression(Node {id: tmp.id})) { yield RightShiftAssignmentExpression { @@ -1096,7 +1096,7 @@ schema UnsignedRightShiftAssignmentExpression extends CompoundAssignmentExpressi impl UnsignedRightShiftAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnsignedRightShiftAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *UnsignedRightShiftAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isUnsignedRightShiftAssignmentExpression(Node {id: tmp.id})) { yield UnsignedRightShiftAssignmentExpression { @@ -1116,7 +1116,7 @@ schema LogicalAndAssignmentExpression extends CompoundAssignmentExpression { impl LogicalAndAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LogicalAndAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *LogicalAndAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isLogicalAndAssignmentExpression(Node {id: tmp.id})) { yield LogicalAndAssignmentExpression { @@ -1136,7 +1136,7 @@ schema LogicalOrAssignmentExpression extends CompoundAssignmentExpression { impl LogicalOrAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LogicalOrAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *LogicalOrAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isLogicalOrAssignmentExpression(Node {id: tmp.id})) { yield LogicalOrAssignmentExpression { @@ -1156,7 +1156,7 @@ schema NullishAssignmentExpression extends CompoundAssignmentExpression { impl NullishAssignmentExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NullishAssignmentExpression { + pub fn __all__(db: JavascriptDB) -> *NullishAssignmentExpression { for (tmp in CompoundAssignmentExpression(db)) { if (isNullishAssignmentExpression(Node {id: tmp.id})) { yield NullishAssignmentExpression { @@ -1176,7 +1176,7 @@ schema CommaExpression extends BinaryExpression { impl CommaExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CommaExpression { + pub fn __all__(db: JavascriptDB) -> *CommaExpression { for (tmp in BinaryExpression(db)) { if (isCommaExpression(Node {id: tmp.id})) { yield CommaExpression { @@ -1196,7 +1196,7 @@ schema ConditionalExpression extends Expression { impl ConditionalExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConditionalExpression { + pub fn __all__(db: JavascriptDB) -> *ConditionalExpression { for (tmp in Expression(db)) { if (isConditionalExpression(Node {id: tmp.id})) { yield ConditionalExpression { @@ -1245,7 +1245,7 @@ schema YieldExpression extends Expression { impl YieldExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *YieldExpression { + pub fn __all__(db: JavascriptDB) -> *YieldExpression { for (tmp in Expression(db)) { if (isYieldExpression(Node {id: tmp.id})) { yield YieldExpression { @@ -1288,7 +1288,7 @@ schema SpreadElement extends Expression { impl SpreadElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SpreadElement { + pub fn __all__(db: JavascriptDB) -> *SpreadElement { for (tmp in Expression(db)) { if (isSpreadElement(Node {id: tmp.id})) { yield SpreadElement { @@ -1316,7 +1316,7 @@ schema OmittedExpression extends Expression { impl OmittedExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *OmittedExpression { + pub fn __all__(db: JavascriptDB) -> *OmittedExpression { for (tmp in Expression(db)) { if (isOmittedExpression(Node {id: tmp.id})) { yield OmittedExpression { @@ -1336,7 +1336,7 @@ schema AsExpression extends Expression { impl AsExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsExpression { + pub fn __all__(db: JavascriptDB) -> *AsExpression { for (tmp in Expression(db)) { if (isAsExpression(Node {id: tmp.id})) { yield AsExpression { @@ -1372,7 +1372,7 @@ schema SyntheticExpression extends Expression { impl SyntheticExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SyntheticExpression { + pub fn __all__(db: JavascriptDB) -> *SyntheticExpression { for (tmp in Expression(db)) { if (isSyntheticExpression(Node {id: tmp.id})) { yield SyntheticExpression { @@ -1393,7 +1393,7 @@ schema CommaListExpression extends Expression { impl CommaListExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CommaListExpression { + pub fn __all__(db: JavascriptDB) -> *CommaListExpression { for (tmp in Expression(db)) { if (isCommaListExpression(Node {id: tmp.id})) { yield CommaListExpression { @@ -1444,7 +1444,7 @@ schema UnaryExpression extends Expression { impl UnaryExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnaryExpression { + pub fn __all__(db: JavascriptDB) -> *UnaryExpression { for (tmp in Expression(db)) { if (isUnaryExpression(Node {id: tmp.id})) { yield UnaryExpression { @@ -1472,7 +1472,7 @@ schema TypeAssertionExpression extends UnaryExpression { impl TypeAssertionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeAssertionExpression { + pub fn __all__(db: JavascriptDB) -> *TypeAssertionExpression { for (tmp in UnaryExpression(db)) { if (isTypeAssertionExpression(Node {id: tmp.id})) { yield TypeAssertionExpression { @@ -1508,7 +1508,7 @@ schema DeleteExpression extends UnaryExpression { impl DeleteExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DeleteExpression { + pub fn __all__(db: JavascriptDB) -> *DeleteExpression { for (tmp in UnaryExpression(db)) { if (isDeleteExpression(Node {id: tmp.id})) { yield DeleteExpression { @@ -1536,7 +1536,7 @@ schema TypeOfExpression extends UnaryExpression { impl TypeOfExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeOfExpression { + pub fn __all__(db: JavascriptDB) -> *TypeOfExpression { for (tmp in UnaryExpression(db)) { if (isTypeOfExpression(Node {id: tmp.id})) { yield TypeOfExpression { @@ -1564,7 +1564,7 @@ schema VoidExpression extends UnaryExpression { impl VoidExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VoidExpression { + pub fn __all__(db: JavascriptDB) -> *VoidExpression { for (tmp in UnaryExpression(db)) { if (isVoidExpression(Node {id: tmp.id})) { yield VoidExpression { @@ -1592,7 +1592,7 @@ schema AwaitExpression extends UnaryExpression { impl AwaitExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AwaitExpression { + pub fn __all__(db: JavascriptDB) -> *AwaitExpression { for (tmp in UnaryExpression(db)) { if (isAwaitExpression(Node {id: tmp.id})) { yield AwaitExpression { @@ -1620,7 +1620,7 @@ schema UpdateExpression extends UnaryExpression { impl UpdateExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UpdateExpression { + pub fn __all__(db: JavascriptDB) -> *UpdateExpression { for (tmp in UnaryExpression(db)) { if (isUpdateExpression(Node {id: tmp.id})) { yield UpdateExpression { @@ -1640,7 +1640,7 @@ schema LeftHandSideExpression extends UpdateExpression { impl LeftHandSideExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LeftHandSideExpression { + pub fn __all__(db: JavascriptDB) -> *LeftHandSideExpression { for (tmp in UpdateExpression(db)) { if (isLeftHandSideExpression(Node {id: tmp.id})) { yield LeftHandSideExpression { @@ -1660,7 +1660,7 @@ schema PrefixUnaryExpression extends UpdateExpression { impl PrefixUnaryExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrefixUnaryExpression { + pub fn __all__(db: JavascriptDB) -> *PrefixUnaryExpression { for (tmp in UpdateExpression(db)) { if (isPrefixUnaryExpression(Node {id: tmp.id})) { yield PrefixUnaryExpression { @@ -1696,7 +1696,7 @@ schema PrefixIncrementExpression extends PrefixUnaryExpression { impl PrefixIncrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrefixIncrementExpression { + pub fn __all__(db: JavascriptDB) -> *PrefixIncrementExpression { for (tmp in PrefixUnaryExpression(db)) { if (isPrefixIncrementExpression(Node {id: tmp.id})) { yield PrefixIncrementExpression { @@ -1716,7 +1716,7 @@ schema PrefixDecrementExpression extends PrefixUnaryExpression { impl PrefixDecrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrefixDecrementExpression { + pub fn __all__(db: JavascriptDB) -> *PrefixDecrementExpression { for (tmp in PrefixUnaryExpression(db)) { if (isPrefixDecrementExpression(Node {id: tmp.id})) { yield PrefixDecrementExpression { @@ -1736,7 +1736,7 @@ schema UnaryPlusExpression extends PrefixUnaryExpression { impl UnaryPlusExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnaryPlusExpression { + pub fn __all__(db: JavascriptDB) -> *UnaryPlusExpression { for (tmp in PrefixUnaryExpression(db)) { if (isUnaryPlusExpression(Node {id: tmp.id})) { yield UnaryPlusExpression { @@ -1756,7 +1756,7 @@ schema UnaryMinusExpression extends PrefixUnaryExpression { impl UnaryMinusExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnaryMinusExpression { + pub fn __all__(db: JavascriptDB) -> *UnaryMinusExpression { for (tmp in PrefixUnaryExpression(db)) { if (isUnaryMinusExpression(Node {id: tmp.id})) { yield UnaryMinusExpression { @@ -1776,7 +1776,7 @@ schema BitwiseNotExpression extends PrefixUnaryExpression { impl BitwiseNotExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BitwiseNotExpression { + pub fn __all__(db: JavascriptDB) -> *BitwiseNotExpression { for (tmp in PrefixUnaryExpression(db)) { if (isBitwiseNotExpression(Node {id: tmp.id})) { yield BitwiseNotExpression { @@ -1796,7 +1796,7 @@ schema LogicalNotExpression extends PrefixUnaryExpression { impl LogicalNotExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LogicalNotExpression { + pub fn __all__(db: JavascriptDB) -> *LogicalNotExpression { for (tmp in PrefixUnaryExpression(db)) { if (isLogicalNotExpression(Node {id: tmp.id})) { yield LogicalNotExpression { @@ -1816,7 +1816,7 @@ schema PostfixUnaryExpression extends UpdateExpression { impl PostfixUnaryExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PostfixUnaryExpression { + pub fn __all__(db: JavascriptDB) -> *PostfixUnaryExpression { for (tmp in UpdateExpression(db)) { if (isPostfixUnaryExpression(Node {id: tmp.id})) { yield PostfixUnaryExpression { @@ -1852,7 +1852,7 @@ schema PostfixIncrementExpression extends PostfixUnaryExpression { impl PostfixIncrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PostfixIncrementExpression { + pub fn __all__(db: JavascriptDB) -> *PostfixIncrementExpression { for (tmp in PostfixUnaryExpression(db)) { if (isPostfixIncrementExpression(Node {id: tmp.id})) { yield PostfixIncrementExpression { @@ -1872,7 +1872,7 @@ schema PostfixDecrementExpression extends PostfixUnaryExpression { impl PostfixDecrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PostfixDecrementExpression { + pub fn __all__(db: JavascriptDB) -> *PostfixDecrementExpression { for (tmp in PostfixUnaryExpression(db)) { if (isPostfixDecrementExpression(Node {id: tmp.id})) { yield PostfixDecrementExpression { @@ -1892,7 +1892,7 @@ schema IncrementExpression extends UpdateExpression { impl IncrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IncrementExpression { + pub fn __all__(db: JavascriptDB) -> *IncrementExpression { for (tmp in UpdateExpression(db)) { if (isIncrementExpression(Node {id: tmp.id})) { yield IncrementExpression { @@ -1912,7 +1912,7 @@ schema DecrementExpression extends UpdateExpression { impl DecrementExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DecrementExpression { + pub fn __all__(db: JavascriptDB) -> *DecrementExpression { for (tmp in UpdateExpression(db)) { if (isDecrementExpression(Node {id: tmp.id})) { yield DecrementExpression { @@ -1932,7 +1932,7 @@ schema CallExpression extends LeftHandSideExpression { impl CallExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CallExpression { + pub fn __all__(db: JavascriptDB) -> *CallExpression { for (tmp in LeftHandSideExpression(db)) { if (isCallExpression(Node {id: tmp.id})) { yield CallExpression { @@ -2103,7 +2103,7 @@ schema NonNullExpression extends LeftHandSideExpression { impl NonNullExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NonNullExpression { + pub fn __all__(db: JavascriptDB) -> *NonNullExpression { for (tmp in LeftHandSideExpression(db)) { if (isNonNullExpression(Node {id: tmp.id})) { yield NonNullExpression { @@ -2132,7 +2132,7 @@ schema PartiallyEmittedExpression extends LeftHandSideExpression { impl PartiallyEmittedExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PartiallyEmittedExpression { + pub fn __all__(db: JavascriptDB) -> *PartiallyEmittedExpression { for (tmp in LeftHandSideExpression(db)) { if (isPartiallyEmittedExpression(Node {id: tmp.id})) { yield PartiallyEmittedExpression { @@ -2161,7 +2161,7 @@ schema SyntheticReferenceExpression extends LeftHandSideExpression { impl SyntheticReferenceExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SyntheticReferenceExpression { + pub fn __all__(db: JavascriptDB) -> *SyntheticReferenceExpression { for (tmp in LeftHandSideExpression(db)) { if (isSyntheticReferenceExpression(Node {id: tmp.id})) { yield SyntheticReferenceExpression { @@ -2181,7 +2181,7 @@ schema MemberExpression extends LeftHandSideExpression { impl MemberExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MemberExpression { + pub fn __all__(db: JavascriptDB) -> *MemberExpression { for (tmp in LeftHandSideExpression(db)) { if (isMemberExpression(Node {id: tmp.id})) { yield MemberExpression { @@ -2201,7 +2201,7 @@ schema MemberName extends Node { impl MemberName { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MemberName { + pub fn __all__(db: JavascriptDB) -> *MemberName { for (tmp in Node(db)) { if (isMemberName(tmp)) { yield MemberName { @@ -2234,7 +2234,7 @@ schema AccessExpression extends MemberExpression { impl AccessExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AccessExpression { + pub fn __all__(db: JavascriptDB) -> *AccessExpression { for (tmp in MemberExpression(db)) { if (isAccessExpression(Node {id: tmp.id})) { yield AccessExpression { @@ -2331,7 +2331,7 @@ schema PropertyAccessExpression extends AccessExpression { impl PropertyAccessExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PropertyAccessExpression { + pub fn __all__(db: JavascriptDB) -> *PropertyAccessExpression { for (tmp in AccessExpression(db)) { if (isPropertyAccessExpression(Node {id: tmp.id})) { yield PropertyAccessExpression { @@ -2371,7 +2371,7 @@ schema ElementAccessExpression extends AccessExpression { impl ElementAccessExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ElementAccessExpression { + pub fn __all__(db: JavascriptDB) -> *ElementAccessExpression { for (tmp in AccessExpression(db)) { if (isElementAccessExpression(Node {id: tmp.id})) { yield ElementAccessExpression { @@ -2411,7 +2411,7 @@ schema TaggedTemplateExpression extends MemberExpression { impl TaggedTemplateExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TaggedTemplateExpression { + pub fn __all__(db: JavascriptDB) -> *TaggedTemplateExpression { for (tmp in MemberExpression(db)) { if (isTaggedTemplateExpression(Node {id: tmp.id})) { yield TaggedTemplateExpression { @@ -2452,7 +2452,7 @@ schema PrimaryExpression extends MemberExpression { impl PrimaryExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrimaryExpression { + pub fn __all__(db: JavascriptDB) -> *PrimaryExpression { for (tmp in MemberExpression(db)) { if (isPrimaryExpression(Node {id: tmp.id})) { yield PrimaryExpression { @@ -2472,7 +2472,7 @@ schema Identifier extends PrimaryExpression { impl Identifier { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Identifier { + pub fn __all__(db: JavascriptDB) -> *Identifier { for (tmp in PrimaryExpression(db)) { if (isIdentifier(Node {id: tmp.id})) { yield Identifier { @@ -2496,7 +2496,7 @@ schema PrivateIdentifier extends PrimaryExpression { impl PrivateIdentifier { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrivateIdentifier { + pub fn __all__(db: JavascriptDB) -> *PrivateIdentifier { for (tmp in PrimaryExpression(db)) { if (isPrivateIdentifier(Node {id: tmp.id})) { yield PrivateIdentifier { @@ -2520,7 +2520,7 @@ schema ThisExpression extends PrimaryExpression { impl ThisExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ThisExpression { + pub fn __all__(db: JavascriptDB) -> *ThisExpression { for (tmp in PrimaryExpression(db)) { if (isThisExpression(Node {id: tmp.id})) { yield ThisExpression { @@ -2540,7 +2540,7 @@ schema SuperExpression extends PrimaryExpression { impl SuperExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SuperExpression { + pub fn __all__(db: JavascriptDB) -> *SuperExpression { for (tmp in PrimaryExpression(db)) { if (isSuperExpression(Node {id: tmp.id})) { yield SuperExpression { @@ -2560,7 +2560,7 @@ schema ImportExpression extends PrimaryExpression { impl ImportExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportExpression { + pub fn __all__(db: JavascriptDB) -> *ImportExpression { for (tmp in PrimaryExpression(db)) { if (isImportExpression(Node {id: tmp.id})) { yield ImportExpression { @@ -2580,7 +2580,7 @@ schema ArrayLiteralExpression extends PrimaryExpression { impl ArrayLiteralExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrayLiteralExpression { + pub fn __all__(db: JavascriptDB) -> *ArrayLiteralExpression { for (tmp in PrimaryExpression(db)) { if (isArrayLiteralExpression(Node {id: tmp.id})) { yield ArrayLiteralExpression { @@ -2618,7 +2618,7 @@ schema NewExpression extends PrimaryExpression { impl NewExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NewExpression { + pub fn __all__(db: JavascriptDB) -> *NewExpression { for (tmp in PrimaryExpression(db)) { if (isNewExpression(Node {id: tmp.id})) { yield NewExpression { @@ -2740,7 +2740,7 @@ schema ParenthesizedExpression extends PrimaryExpression { impl ParenthesizedExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ParenthesizedExpression { + pub fn __all__(db: JavascriptDB) -> *ParenthesizedExpression { for (tmp in PrimaryExpression(db)) { if (isParenthesizedExpression(Node {id: tmp.id})) { yield ParenthesizedExpression { @@ -2768,7 +2768,7 @@ schema FunctionExpression extends PrimaryExpression { impl FunctionExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionExpression { + pub fn __all__(db: JavascriptDB) -> *FunctionExpression { for (tmp in PrimaryExpression(db)) { if (isFunctionExpression(Node {id: tmp.id})) { yield FunctionExpression { @@ -2818,7 +2818,7 @@ schema TemplateExpression extends PrimaryExpression { impl TemplateExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateExpression { + pub fn __all__(db: JavascriptDB) -> *TemplateExpression { for (tmp in PrimaryExpression(db)) { if (isTemplateExpression(Node {id: tmp.id})) { yield TemplateExpression { @@ -2868,7 +2868,7 @@ schema ClassExpression extends PrimaryExpression { impl ClassExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassExpression { + pub fn __all__(db: JavascriptDB) -> *ClassExpression { for (tmp in PrimaryExpression(db)) { if (isClassExpression(Node {id: tmp.id})) { yield ClassExpression { @@ -2888,7 +2888,7 @@ schema MetaProperty extends PrimaryExpression { impl MetaProperty { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MetaProperty { + pub fn __all__(db: JavascriptDB) -> *MetaProperty { for (tmp in PrimaryExpression(db)) { if (isMetaProperty(Node {id: tmp.id})) { yield MetaProperty { @@ -2924,7 +2924,7 @@ schema LiteralExpression extends PrimaryExpression { impl LiteralExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LiteralExpression { + pub fn __all__(db: JavascriptDB) -> *LiteralExpression { for (tmp in PrimaryExpression(db)) { if (isLiteralExpression(Node {id: tmp.id})) { yield LiteralExpression { @@ -2957,7 +2957,7 @@ schema NullLiteral extends PrimaryExpression { impl NullLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NullLiteral { + pub fn __all__(db: JavascriptDB) -> *NullLiteral { for (tmp in PrimaryExpression(db)) { if (isNullLiteral(Node {id: tmp.id})) { yield NullLiteral { @@ -2977,7 +2977,7 @@ schema TrueLiteral extends PrimaryExpression { impl TrueLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TrueLiteral { + pub fn __all__(db: JavascriptDB) -> *TrueLiteral { for (tmp in PrimaryExpression(db)) { if (isTrueKeyword(Node {id: tmp.id})) { yield TrueLiteral { @@ -2997,7 +2997,7 @@ schema FalseLiteral extends PrimaryExpression { impl FalseLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FalseLiteral { + pub fn __all__(db: JavascriptDB) -> *FalseLiteral { for (tmp in PrimaryExpression(db)) { if (isFalseKeyword(Node {id: tmp.id})) { yield FalseLiteral { @@ -3017,7 +3017,7 @@ schema BooleanLiteral extends PrimaryExpression { impl BooleanLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BooleanLiteral { + pub fn __all__(db: JavascriptDB) -> *BooleanLiteral { for (tmp in PrimaryExpression(db)) { if (isBooleanLiteral(Node {id: tmp.id})) { yield BooleanLiteral { @@ -3037,7 +3037,7 @@ schema NumericLiteral extends LiteralExpression { impl NumericLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NumericLiteral { + pub fn __all__(db: JavascriptDB) -> *NumericLiteral { for (tmp in LiteralExpression(db)) { if (isNumericLiteral(Node {id: tmp.id})) { yield NumericLiteral { @@ -3057,7 +3057,7 @@ schema BigIntLiteral extends LiteralExpression { impl BigIntLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BigIntLiteral { + pub fn __all__(db: JavascriptDB) -> *BigIntLiteral { for (tmp in LiteralExpression(db)) { if (isBigIntLiteral(Node {id: tmp.id})) { yield BigIntLiteral { @@ -3077,7 +3077,7 @@ schema StringLiteral extends LiteralExpression { impl StringLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StringLiteral { + pub fn __all__(db: JavascriptDB) -> *StringLiteral { for (tmp in LiteralExpression(db)) { if (isStringLiteral(Node {id: tmp.id})) { yield StringLiteral { @@ -3101,7 +3101,7 @@ schema RegularExpressionLiteral extends LiteralExpression { impl RegularExpressionLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RegularExpressionLiteral { + pub fn __all__(db: JavascriptDB) -> *RegularExpressionLiteral { for (tmp in LiteralExpression(db)) { if (isRegularExpressionLiteral(Node {id: tmp.id})) { yield RegularExpressionLiteral { @@ -3121,7 +3121,7 @@ schema NoSubstitutionTemplateLiteral extends LiteralExpression { impl NoSubstitutionTemplateLiteral { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NoSubstitutionTemplateLiteral { + pub fn __all__(db: JavascriptDB) -> *NoSubstitutionTemplateLiteral { for (tmp in LiteralExpression(db)) { if (isNoSubstitutionTemplateLiteral(Node {id: tmp.id})) { yield NoSubstitutionTemplateLiteral { @@ -3141,7 +3141,7 @@ schema Decorator extends Node { impl Decorator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Decorator { + pub fn __all__(db: JavascriptDB) -> *Decorator { for (tmp in Node(db)) { if (isDecorator(tmp)) { yield Decorator { @@ -3185,7 +3185,7 @@ schema CallLikeExpression extends Expression { impl CallLikeExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CallLikeExpression { + pub fn __all__(db: JavascriptDB) -> *CallLikeExpression { for (tmp in Expression(db)) { if (isCallLikeExpression(Node {id: tmp.id})) { yield CallLikeExpression { @@ -3229,7 +3229,7 @@ schema MayInvokeExpression extends Expression { impl MayInvokeExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MayInvokeExpression { + pub fn __all__(db: JavascriptDB) -> *MayInvokeExpression { for (tmp in Expression(db)) { if (isMayInvokeExpression(Node {id: tmp.id})) { yield MayInvokeExpression { diff --git a/language/javascript/lib/FileSystem.gdl b/language/javascript/lib/FileSystem.gdl index 1767a3eb..7cfff15e 100644 --- a/language/javascript/lib/FileSystem.gdl +++ b/language/javascript/lib/FileSystem.gdl @@ -12,7 +12,7 @@ schema File extends FileDO { impl File { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *File { + pub fn __all__(db: JavascriptDB) -> *File { for (tmp in FileDO(db)) { yield File { oid : tmp.oid, diff --git a/language/javascript/lib/Function.gdl b/language/javascript/lib/Function.gdl index 40e1aa3e..3e46c062 100644 --- a/language/javascript/lib/Function.gdl +++ b/language/javascript/lib/Function.gdl @@ -12,7 +12,7 @@ schema FunctionLike extends Node { impl FunctionLike { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionLike { + pub fn __all__(db: JavascriptDB) -> *FunctionLike { for (tmp in Node(db)) { if (isFunctionLike(tmp)) { yield FunctionLike { @@ -34,7 +34,7 @@ schema CallSite extends CallSiteDO { impl CallSite { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CallSite { + pub fn __all__(db: JavascriptDB) -> *CallSite { for (tmp in CallSiteDO(db)) { yield CallSite { invoke_expression_oid : tmp.invoke_expression_oid, @@ -67,7 +67,7 @@ schema FunctionLikeDeclaration extends FunctionLike { impl FunctionLikeDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionLikeDeclaration { + pub fn __all__(db: JavascriptDB) -> *FunctionLikeDeclaration { for (tmp in FunctionLike(db)) { if (isFunctionLikeDeclaration(Node {id: tmp.id})) { yield FunctionLikeDeclaration { @@ -375,7 +375,7 @@ schema FunctionDeclaration extends FunctionLikeDeclaration { impl FunctionDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionDeclaration { + pub fn __all__(db: JavascriptDB) -> *FunctionDeclaration { for (tmp in FunctionLikeDeclaration(db)) { if (isFunctionDeclaration(Node {id: tmp.id})) { yield FunctionDeclaration { @@ -395,7 +395,7 @@ schema MethodDeclaration extends FunctionLikeDeclaration { impl MethodDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MethodDeclaration { + pub fn __all__(db: JavascriptDB) -> *MethodDeclaration { for (tmp in FunctionLikeDeclaration(db)) { if (isMethodDeclaration(Node {id: tmp.id})) { yield MethodDeclaration { @@ -419,7 +419,7 @@ schema ConstructorDeclaration extends FunctionLikeDeclaration { impl ConstructorDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConstructorDeclaration { + pub fn __all__(db: JavascriptDB) -> *ConstructorDeclaration { for (tmp in FunctionLikeDeclaration(db)) { if (isConstructor(Node {id: tmp.id})) { yield ConstructorDeclaration { @@ -439,7 +439,7 @@ schema GetAccessor extends FunctionLikeDeclaration { impl GetAccessor { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GetAccessor { + pub fn __all__(db: JavascriptDB) -> *GetAccessor { for (tmp in FunctionLikeDeclaration(db)) { if (isGetAccessor(Node {id: tmp.id})) { yield GetAccessor { @@ -459,7 +459,7 @@ schema SetAccessor extends FunctionLikeDeclaration { impl SetAccessor { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SetAccessor { + pub fn __all__(db: JavascriptDB) -> *SetAccessor { for (tmp in FunctionLikeDeclaration(db)) { if (isSetAccessor(Node {id: tmp.id})) { yield SetAccessor { @@ -479,7 +479,7 @@ schema FunctionExpressionDeclaration extends FunctionLikeDeclaration { impl FunctionExpressionDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionExpressionDeclaration { + pub fn __all__(db: JavascriptDB) -> *FunctionExpressionDeclaration { for (tmp in FunctionLikeDeclaration(db)) { if (isFunctionExpression(Node {id: tmp.id})) { yield FunctionExpressionDeclaration { @@ -499,7 +499,7 @@ schema ArrowFunction extends FunctionLikeDeclaration { impl ArrowFunction { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrowFunction { + pub fn __all__(db: JavascriptDB) -> *ArrowFunction { for (tmp in FunctionLikeDeclaration(db)) { if (isArrowFunction(Node {id: tmp.id})) { yield ArrowFunction { diff --git a/language/javascript/lib/HeritageClause.gdl b/language/javascript/lib/HeritageClause.gdl index bfd644eb..20a27903 100644 --- a/language/javascript/lib/HeritageClause.gdl +++ b/language/javascript/lib/HeritageClause.gdl @@ -12,7 +12,7 @@ schema HeritageToken extends Node { impl HeritageToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *HeritageToken { + pub fn __all__(db: JavascriptDB) -> *HeritageToken { for (tmp in Node(db)) { if (isHeritageToken(tmp)) { yield HeritageToken { @@ -32,7 +32,7 @@ schema HeritageClause extends Node { impl HeritageClause { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *HeritageClause { + pub fn __all__(db: JavascriptDB) -> *HeritageClause { for (tmp in Node(db)) { if (isHeritageClause(tmp)) { yield HeritageClause { diff --git a/language/javascript/lib/ImportOrExportElement.gdl b/language/javascript/lib/ImportOrExportElement.gdl index 212f255c..5f48322d 100644 --- a/language/javascript/lib/ImportOrExportElement.gdl +++ b/language/javascript/lib/ImportOrExportElement.gdl @@ -12,7 +12,7 @@ schema QualifiedName extends Node { impl QualifiedName { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *QualifiedName { + pub fn __all__(db: JavascriptDB) -> *QualifiedName { for (tmp in Node(db)) { if (isQualifiedName(tmp)) { yield QualifiedName { @@ -32,7 +32,7 @@ schema ImportClause extends Node { impl ImportClause { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportClause { + pub fn __all__(db: JavascriptDB) -> *ImportClause { for (tmp in Node(db)) { if (isImportClause(tmp)) { yield ImportClause { @@ -52,7 +52,7 @@ schema NamespaceImport extends Node { impl NamespaceImport { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamespaceImport { + pub fn __all__(db: JavascriptDB) -> *NamespaceImport { for (tmp in Node(db)) { if (isNamespaceImport(tmp)) { yield NamespaceImport { @@ -72,7 +72,7 @@ schema NamedImports extends Node { impl NamedImports { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamedImports { + pub fn __all__(db: JavascriptDB) -> *NamedImports { for (tmp in Node(db)) { if (isNamedImports(tmp)) { yield NamedImports { @@ -92,7 +92,7 @@ schema ImportSpecifier extends Node { impl ImportSpecifier { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportSpecifier { + pub fn __all__(db: JavascriptDB) -> *ImportSpecifier { for (tmp in Node(db)) { if (isImportSpecifier(tmp)) { yield ImportSpecifier { @@ -112,7 +112,7 @@ schema NamedExports extends Node { impl NamedExports { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamedExports { + pub fn __all__(db: JavascriptDB) -> *NamedExports { for (tmp in Node(db)) { if (isNamedExports(tmp)) { yield NamedExports { @@ -132,7 +132,7 @@ schema NamespaceExport extends Node { impl NamespaceExport { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamespaceExport { + pub fn __all__(db: JavascriptDB) -> *NamespaceExport { for (tmp in Node(db)) { if (isNamespaceExport(tmp)) { yield NamespaceExport { @@ -152,7 +152,7 @@ schema ExportSpecifier extends Node { impl ExportSpecifier { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExportSpecifier { + pub fn __all__(db: JavascriptDB) -> *ExportSpecifier { for (tmp in Node(db)) { if (isExportSpecifier(tmp)) { yield ExportSpecifier { @@ -172,7 +172,7 @@ schema ExternalModuleReference extends Node { impl ExternalModuleReference { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExternalModuleReference { + pub fn __all__(db: JavascriptDB) -> *ExternalModuleReference { for (tmp in Node(db)) { if (isExternalModuleReference(tmp)) { yield ExternalModuleReference { diff --git a/language/javascript/lib/JSX.gdl b/language/javascript/lib/JSX.gdl index 6ccc8a86..66fbffdb 100644 --- a/language/javascript/lib/JSX.gdl +++ b/language/javascript/lib/JSX.gdl @@ -12,7 +12,7 @@ schema JsxText extends Node { impl JsxText { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxText { + pub fn __all__(db: JavascriptDB) -> *JsxText { for (tmp in Node(db)) { if (isJsxText(tmp)) { yield JsxText { @@ -45,7 +45,7 @@ schema JsxElement extends PrimaryExpression { impl JsxElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxElement { + pub fn __all__(db: JavascriptDB) -> *JsxElement { for (tmp in PrimaryExpression(db)) { if (isJsxElement(Node {id: tmp.id})) { yield JsxElement { @@ -65,7 +65,7 @@ schema JsxSelfClosingElement extends PrimaryExpression { impl JsxSelfClosingElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxSelfClosingElement { + pub fn __all__(db: JavascriptDB) -> *JsxSelfClosingElement { for (tmp in PrimaryExpression(db)) { if (isJsxSelfClosingElement(Node {id: tmp.id})) { yield JsxSelfClosingElement { @@ -85,7 +85,7 @@ schema JsxOpeningElement extends Expression { impl JsxOpeningElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxOpeningElement { + pub fn __all__(db: JavascriptDB) -> *JsxOpeningElement { for (tmp in Expression(db)) { if (isJsxOpeningElement(Node {id: tmp.id})) { yield JsxOpeningElement { @@ -126,7 +126,7 @@ schema JsxClosingElement extends Expression { impl JsxClosingElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxClosingElement { + pub fn __all__(db: JavascriptDB) -> *JsxClosingElement { for (tmp in Expression(db)) { if (isJsxClosingElement(Node {id: tmp.id})) { yield JsxClosingElement { @@ -154,7 +154,7 @@ schema JsxFragment extends PrimaryExpression { impl JsxFragment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxFragment { + pub fn __all__(db: JavascriptDB) -> *JsxFragment { for (tmp in PrimaryExpression(db)) { if (isJsxFragment(Node {id: tmp.id})) { yield JsxFragment { @@ -174,7 +174,7 @@ schema JsxOpeningFragment extends Expression { impl JsxOpeningFragment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxOpeningFragment { + pub fn __all__(db: JavascriptDB) -> *JsxOpeningFragment { for (tmp in Expression(db)) { if (isJsxOpeningFragment(Node {id: tmp.id})) { yield JsxOpeningFragment { @@ -202,7 +202,7 @@ schema JsxClosingFragment extends Expression { impl JsxClosingFragment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxClosingFragment { + pub fn __all__(db: JavascriptDB) -> *JsxClosingFragment { for (tmp in Expression(db)) { if (isJsxClosingFragment(Node {id: tmp.id})) { yield JsxClosingFragment { @@ -230,7 +230,7 @@ schema JsxAttribute extends Node { impl JsxAttribute { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxAttribute { + pub fn __all__(db: JavascriptDB) -> *JsxAttribute { for (tmp in Node(db)) { if (isJsxAttribute(tmp)) { yield JsxAttribute { @@ -274,7 +274,7 @@ schema JsxAttributes extends PrimaryExpression { impl JsxAttributes { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxAttributes { + pub fn __all__(db: JavascriptDB) -> *JsxAttributes { for (tmp in PrimaryExpression(db)) { if (isJsxAttributes(Node {id: tmp.id})) { yield JsxAttributes { @@ -294,7 +294,7 @@ schema JsxSpreadAttribute extends Node { impl JsxSpreadAttribute { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxSpreadAttribute { + pub fn __all__(db: JavascriptDB) -> *JsxSpreadAttribute { for (tmp in Node(db)) { if (isJsxSpreadAttribute(tmp)) { yield JsxSpreadAttribute { @@ -330,7 +330,7 @@ schema JsxExpression extends Expression { impl JsxExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxExpression { + pub fn __all__(db: JavascriptDB) -> *JsxExpression { for (tmp in Expression(db)) { if (isJsxExpression(Node {id: tmp.id})) { yield JsxExpression { @@ -350,7 +350,7 @@ schema JsxAttributeInitializer extends Node { impl JsxAttributeInitializer { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxAttributeInitializer { + pub fn __all__(db: JavascriptDB) -> *JsxAttributeInitializer { for (tmp in Node(db)) { if (isStringLiteral(tmp)) { yield JsxAttributeInitializer { diff --git a/language/javascript/lib/Location.gdl b/language/javascript/lib/Location.gdl index 4cbf7f0f..6c0fe9f0 100644 --- a/language/javascript/lib/Location.gdl +++ b/language/javascript/lib/Location.gdl @@ -12,7 +12,7 @@ schema Location extends LocationDO { impl Location { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Location { + pub fn __all__(db: JavascriptDB) -> *Location { for (tmp in LocationDO(db)) { yield Location { oid : tmp.oid, diff --git a/language/javascript/lib/Modifier.gdl b/language/javascript/lib/Modifier.gdl index 8fd01079..2689dcb5 100644 --- a/language/javascript/lib/Modifier.gdl +++ b/language/javascript/lib/Modifier.gdl @@ -12,7 +12,7 @@ schema Modifier extends Token { impl Modifier { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Modifier { + pub fn __all__(db: JavascriptDB) -> *Modifier { for (tmp in Token(db)) { if (isModifier(Node {id: tmp.id})) { yield Modifier { @@ -32,7 +32,7 @@ schema ConstKeyword extends Modifier { impl ConstKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConstKeyword { + pub fn __all__(db: JavascriptDB) -> *ConstKeyword { for (tmp in Modifier(db)) { if (isConstKeyword(Node {id: tmp.id})) { yield ConstKeyword { @@ -52,7 +52,7 @@ schema DefaultKeyword extends Modifier { impl DefaultKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DefaultKeyword { + pub fn __all__(db: JavascriptDB) -> *DefaultKeyword { for (tmp in Modifier(db)) { if (isDefaultKeyword(Node {id: tmp.id})) { yield DefaultKeyword { @@ -72,7 +72,7 @@ schema ExportKeyword extends Modifier { impl ExportKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExportKeyword { + pub fn __all__(db: JavascriptDB) -> *ExportKeyword { for (tmp in Modifier(db)) { if (isExportKeyword(Node {id: tmp.id})) { yield ExportKeyword { @@ -92,7 +92,7 @@ schema PrivateKeyword extends Modifier { impl PrivateKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrivateKeyword { + pub fn __all__(db: JavascriptDB) -> *PrivateKeyword { for (tmp in Modifier(db)) { if (isPrivateKeyword(Node {id: tmp.id})) { yield PrivateKeyword { @@ -112,7 +112,7 @@ schema ProtectedKeyword extends Modifier { impl ProtectedKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ProtectedKeyword { + pub fn __all__(db: JavascriptDB) -> *ProtectedKeyword { for (tmp in Modifier(db)) { if (isProtectedKeyword(Node {id: tmp.id})) { yield ProtectedKeyword { @@ -132,7 +132,7 @@ schema PublicKeyword extends Modifier { impl PublicKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PublicKeyword { + pub fn __all__(db: JavascriptDB) -> *PublicKeyword { for (tmp in Modifier(db)) { if (isPublicKeyword(Node {id: tmp.id})) { yield PublicKeyword { @@ -152,7 +152,7 @@ schema StaticKeyword extends Modifier { impl StaticKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StaticKeyword { + pub fn __all__(db: JavascriptDB) -> *StaticKeyword { for (tmp in Modifier(db)) { if (isStaticKeyword(Node {id: tmp.id})) { yield StaticKeyword { @@ -172,7 +172,7 @@ schema AbstractKeyword extends Modifier { impl AbstractKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AbstractKeyword { + pub fn __all__(db: JavascriptDB) -> *AbstractKeyword { for (tmp in Modifier(db)) { if (isAbstractKeyword(Node {id: tmp.id})) { yield AbstractKeyword { @@ -192,7 +192,7 @@ schema AsyncKeyword extends Modifier { impl AsyncKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsyncKeyword { + pub fn __all__(db: JavascriptDB) -> *AsyncKeyword { for (tmp in Modifier(db)) { if (isAsyncKeyword(Node {id: tmp.id})) { yield AsyncKeyword { @@ -212,7 +212,7 @@ schema DeclareKeyword extends Modifier { impl DeclareKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DeclareKeyword { + pub fn __all__(db: JavascriptDB) -> *DeclareKeyword { for (tmp in Modifier(db)) { if (isDeclareKeyword(Node {id: tmp.id})) { yield DeclareKeyword { @@ -232,7 +232,7 @@ schema ReadonlyKeyword extends Modifier { impl ReadonlyKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ReadonlyKeyword { + pub fn __all__(db: JavascriptDB) -> *ReadonlyKeyword { for (tmp in Modifier(db)) { if (isReadonlyKeyword(Node {id: tmp.id})) { yield ReadonlyKeyword { @@ -252,7 +252,7 @@ schema OverrideKeyword extends Modifier { impl OverrideKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *OverrideKeyword { + pub fn __all__(db: JavascriptDB) -> *OverrideKeyword { for (tmp in Modifier(db)) { if (isOverrideKeyword(Node {id: tmp.id})) { yield OverrideKeyword { diff --git a/language/javascript/lib/Node.gdl b/language/javascript/lib/Node.gdl index 3512a019..74acbc08 100644 --- a/language/javascript/lib/Node.gdl +++ b/language/javascript/lib/Node.gdl @@ -13,7 +13,7 @@ schema Node { impl Node { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Node { + pub fn __all__(db: JavascriptDB) -> *Node { for (nodeDO in NodeDO(db)) { yield Node {id : nodeDO.oid} } diff --git a/language/javascript/lib/NumberOfLines.gdl b/language/javascript/lib/NumberOfLines.gdl index ef3f0df6..3a91ca5e 100644 --- a/language/javascript/lib/NumberOfLines.gdl +++ b/language/javascript/lib/NumberOfLines.gdl @@ -12,7 +12,7 @@ schema NumberOfLines extends NumberOfLinesDO { impl NumberOfLines { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NumberOfLines { + pub fn __all__(db: JavascriptDB) -> *NumberOfLines { for (tmp in NumberOfLinesDO(db)) { yield NumberOfLines { location_oid : tmp.location_oid, diff --git a/language/javascript/lib/ObjectLiteral.gdl b/language/javascript/lib/ObjectLiteral.gdl index 3415bdf2..ef7788d5 100644 --- a/language/javascript/lib/ObjectLiteral.gdl +++ b/language/javascript/lib/ObjectLiteral.gdl @@ -12,7 +12,7 @@ schema ObjectLiteralExpression extends PrimaryExpression { impl ObjectLiteralExpression { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ObjectLiteralExpression { + pub fn __all__(db: JavascriptDB) -> *ObjectLiteralExpression { for (tmp in PrimaryExpression(db)) { if (isObjectLiteralExpression(Node {id: tmp.id})) { yield ObjectLiteralExpression { @@ -93,7 +93,7 @@ schema ObjectLiteralElement extends Node { impl ObjectLiteralElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ObjectLiteralElement { + pub fn __all__(db: JavascriptDB) -> *ObjectLiteralElement { for (tmp in Node(db)) { if (isObjectLiteralElement(tmp)) { yield ObjectLiteralElement { @@ -143,7 +143,7 @@ schema ComputedPropertyName extends Node { impl ComputedPropertyName { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ComputedPropertyName { + pub fn __all__(db: JavascriptDB) -> *ComputedPropertyName { for (tmp in Node(db)) { if (isComputedPropertyName(tmp)) { yield ComputedPropertyName { @@ -170,7 +170,7 @@ schema PropertyName extends Node { impl PropertyName { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PropertyName { + pub fn __all__(db: JavascriptDB) -> *PropertyName { for (tmp in Node(db)) { if (isPropertyName(tmp)) { yield PropertyName { @@ -218,7 +218,7 @@ schema PropertyAssignment extends ObjectLiteralElement { impl PropertyAssignment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PropertyAssignment { + pub fn __all__(db: JavascriptDB) -> *PropertyAssignment { for (tmp in ObjectLiteralElement(db)) { if (isPropertyAssignment(Node {id: tmp.id})) { yield PropertyAssignment { @@ -276,7 +276,7 @@ schema ShorthandPropertyAssignment extends ObjectLiteralElement { impl ShorthandPropertyAssignment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ShorthandPropertyAssignment { + pub fn __all__(db: JavascriptDB) -> *ShorthandPropertyAssignment { for (tmp in ObjectLiteralElement(db)) { if (isShorthandPropertyAssignment(Node {id: tmp.id})) { yield ShorthandPropertyAssignment { @@ -338,7 +338,7 @@ schema SpreadAssignment extends ObjectLiteralElement { impl SpreadAssignment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SpreadAssignment { + pub fn __all__(db: JavascriptDB) -> *SpreadAssignment { for (tmp in ObjectLiteralElement(db)) { if (isSpreadAssignment(Node {id: tmp.id})) { yield SpreadAssignment { diff --git a/language/javascript/lib/Statement.gdl b/language/javascript/lib/Statement.gdl index 07819881..8c5c3f96 100644 --- a/language/javascript/lib/Statement.gdl +++ b/language/javascript/lib/Statement.gdl @@ -12,7 +12,7 @@ schema Statement extends Node { impl Statement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Statement { + pub fn __all__(db: JavascriptDB) -> *Statement { for (tmp in Node(db)) { if (isStatement(tmp)) { yield Statement { @@ -32,7 +32,7 @@ schema DeclarationStatement extends Statement { impl DeclarationStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DeclarationStatement { + pub fn __all__(db: JavascriptDB) -> *DeclarationStatement { for (tmp in Statement(db)) { if (isDeclarationStatement(Node {id: tmp.id})) { yield DeclarationStatement { @@ -52,7 +52,7 @@ schema StatementButNotDeclaration extends Statement { impl StatementButNotDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StatementButNotDeclaration { + pub fn __all__(db: JavascriptDB) -> *StatementButNotDeclaration { for (tmp in Statement(db)) { if (isStatementButNotDeclaration(Node {id: tmp.id})) { yield StatementButNotDeclaration { @@ -72,7 +72,7 @@ schema BlockStatement extends Statement { impl BlockStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BlockStatement { + pub fn __all__(db: JavascriptDB) -> *BlockStatement { for (tmp in Statement(db)) { if (isBlockStatement(Node {id: tmp.id})) { yield BlockStatement { @@ -123,7 +123,7 @@ schema EmptyStatement extends Statement { impl EmptyStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EmptyStatement { + pub fn __all__(db: JavascriptDB) -> *EmptyStatement { for (tmp in Statement(db)) { if (tmp.getKind() = 235) { yield EmptyStatement { @@ -143,7 +143,7 @@ schema VariableStatement extends Statement { impl VariableStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VariableStatement { + pub fn __all__(db: JavascriptDB) -> *VariableStatement { for (tmp in Statement(db)) { if (isVariableStatement(Node {id: tmp.id})) { yield VariableStatement { @@ -176,7 +176,7 @@ schema ExpressionStatement extends Statement { impl ExpressionStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExpressionStatement { + pub fn __all__(db: JavascriptDB) -> *ExpressionStatement { for (tmp in Statement(db)) { if (isExpressionStatement(Node {id: tmp.id})) { yield ExpressionStatement { @@ -206,7 +206,7 @@ schema IfStatement extends Statement { impl IfStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IfStatement { + pub fn __all__(db: JavascriptDB) -> *IfStatement { for (tmp in Statement(db)) { if (isIfStatement(Node {id: tmp.id})) { yield IfStatement { @@ -270,7 +270,7 @@ schema DoWhileStatement extends Statement { impl DoWhileStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DoWhileStatement { + pub fn __all__(db: JavascriptDB) -> *DoWhileStatement { for (tmp in Statement(db)) { if (isDoWhileStatement(Node {id: tmp.id})) { yield DoWhileStatement { @@ -312,7 +312,7 @@ schema WhileStatement extends Statement { impl WhileStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *WhileStatement { + pub fn __all__(db: JavascriptDB) -> *WhileStatement { for (tmp in Statement(db)) { if (isWhileStatement(Node {id: tmp.id})) { yield WhileStatement { @@ -354,7 +354,7 @@ schema ForInitializer extends Node { impl ForInitializer { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ForInitializer { + pub fn __all__(db: JavascriptDB) -> *ForInitializer { for (tmp in Node(db)) { if (isForInitializer(tmp)) { yield ForInitializer { @@ -374,7 +374,7 @@ schema ForStatement extends Statement { impl ForStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ForStatement { + pub fn __all__(db: JavascriptDB) -> *ForStatement { for (tmp in Statement(db)) { if (isForStatement(Node {id: tmp.id})) { yield ForStatement { @@ -480,7 +480,7 @@ schema EnhancedForStatement extends Statement { impl EnhancedForStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EnhancedForStatement { + pub fn __all__(db: JavascriptDB) -> *EnhancedForStatement { for (tmp in Statement(db)) { if (isEnhancedForStatement(Node {id: tmp.id})) { yield EnhancedForStatement { @@ -567,7 +567,7 @@ schema ForInStatement extends EnhancedForStatement { impl ForInStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ForInStatement { + pub fn __all__(db: JavascriptDB) -> *ForInStatement { for (tmp in EnhancedForStatement(db)) { if (isForInStatement(Node {id: tmp.id})) { yield ForInStatement { @@ -587,7 +587,7 @@ schema ForOfStatement extends EnhancedForStatement { impl ForOfStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ForOfStatement { + pub fn __all__(db: JavascriptDB) -> *ForOfStatement { for (tmp in EnhancedForStatement(db)) { if (isForOfStatement(Node {id: tmp.id})) { yield ForOfStatement { @@ -619,7 +619,7 @@ schema IterationStatement extends Statement { impl IterationStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IterationStatement { + pub fn __all__(db: JavascriptDB) -> *IterationStatement { for (tmp in Statement(db)) { if (isIterationStatement(Node {id: tmp.id})) { yield IterationStatement { @@ -701,7 +701,7 @@ schema ContinueStatement extends Statement { impl ContinueStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ContinueStatement { + pub fn __all__(db: JavascriptDB) -> *ContinueStatement { for (tmp in Statement(db)) { if (isContinueStatement(Node {id: tmp.id})) { yield ContinueStatement { @@ -721,7 +721,7 @@ schema BreakStatement extends Statement { impl BreakStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BreakStatement { + pub fn __all__(db: JavascriptDB) -> *BreakStatement { for (tmp in Statement(db)) { if (isBreakStatement(Node {id: tmp.id})) { yield BreakStatement { @@ -741,7 +741,7 @@ schema ReturnStatement extends Statement { impl ReturnStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ReturnStatement { + pub fn __all__(db: JavascriptDB) -> *ReturnStatement { for (tmp in Statement(db)) { if (isReturnStatement(Node {id: tmp.id})) { yield ReturnStatement { @@ -772,7 +772,7 @@ schema WithStatement extends Statement { impl WithStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *WithStatement { + pub fn __all__(db: JavascriptDB) -> *WithStatement { for (tmp in Statement(db)) { if (isWithStatement(Node {id: tmp.id})) { yield WithStatement { @@ -817,7 +817,7 @@ schema FunctionDeclarationStatement extends DeclarationStatement { impl FunctionDeclarationStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionDeclarationStatement { + pub fn __all__(db: JavascriptDB) -> *FunctionDeclarationStatement { for (tmp in DeclarationStatement(db)) { if (isFunctionDeclaration(Node {id: tmp.id})) { yield FunctionDeclarationStatement { @@ -837,7 +837,7 @@ schema ClassDeclarationStatement extends DeclarationStatement { impl ClassDeclarationStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ClassDeclarationStatement { + pub fn __all__(db: JavascriptDB) -> *ClassDeclarationStatement { for (tmp in DeclarationStatement(db)) { if (isClassDeclaration(Node {id: tmp.id})) { yield ClassDeclarationStatement { @@ -857,7 +857,7 @@ schema InterfaceDeclaration extends DeclarationStatement { impl InterfaceDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InterfaceDeclaration { + pub fn __all__(db: JavascriptDB) -> *InterfaceDeclaration { for (tmp in DeclarationStatement(db)) { if (isInterfaceDeclaration(Node {id: tmp.id})) { yield InterfaceDeclaration { @@ -877,7 +877,7 @@ schema TypeAliasDeclaration extends DeclarationStatement { impl TypeAliasDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeAliasDeclaration { + pub fn __all__(db: JavascriptDB) -> *TypeAliasDeclaration { for (tmp in DeclarationStatement(db)) { if (isTypeAliasDeclaration(Node {id: tmp.id})) { yield TypeAliasDeclaration { @@ -897,7 +897,7 @@ schema EnumDeclaration extends DeclarationStatement { impl EnumDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EnumDeclaration { + pub fn __all__(db: JavascriptDB) -> *EnumDeclaration { for (tmp in DeclarationStatement(db)) { if (isEnumDeclaration(Node {id: tmp.id})) { yield EnumDeclaration { @@ -961,7 +961,7 @@ schema ModuleDeclaration extends DeclarationStatement { impl ModuleDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ModuleDeclaration { + pub fn __all__(db: JavascriptDB) -> *ModuleDeclaration { for (tmp in DeclarationStatement(db)) { if (isModuleDeclaration(Node {id: tmp.id})) { yield ModuleDeclaration { @@ -981,7 +981,7 @@ schema NamespaceExportDeclaration extends DeclarationStatement { impl NamespaceExportDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamespaceExportDeclaration { + pub fn __all__(db: JavascriptDB) -> *NamespaceExportDeclaration { for (tmp in DeclarationStatement(db)) { if (isNamespaceExportDeclaration(Node {id: tmp.id})) { yield NamespaceExportDeclaration { @@ -1001,7 +1001,7 @@ schema ImportEqualsDeclaration extends DeclarationStatement { impl ImportEqualsDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportEqualsDeclaration { + pub fn __all__(db: JavascriptDB) -> *ImportEqualsDeclaration { for (tmp in DeclarationStatement(db)) { if (isImportEqualsDeclaration(Node {id: tmp.id})) { yield ImportEqualsDeclaration { @@ -1021,7 +1021,7 @@ schema ImportDeclaration extends DeclarationStatement { impl ImportDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportDeclaration { + pub fn __all__(db: JavascriptDB) -> *ImportDeclaration { for (tmp in DeclarationStatement(db)) { if (isImportDeclaration(Node {id: tmp.id})) { yield ImportDeclaration { @@ -1041,7 +1041,7 @@ schema ExportAssignment extends DeclarationStatement { impl ExportAssignment { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExportAssignment { + pub fn __all__(db: JavascriptDB) -> *ExportAssignment { for (tmp in DeclarationStatement(db)) { if (isExportAssignment(Node {id: tmp.id})) { yield ExportAssignment { @@ -1061,7 +1061,7 @@ schema ExportDeclaration extends DeclarationStatement { impl ExportDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExportDeclaration { + pub fn __all__(db: JavascriptDB) -> *ExportDeclaration { for (tmp in DeclarationStatement(db)) { if (isExportDeclaration(Node {id: tmp.id})) { yield ExportDeclaration { @@ -1081,7 +1081,7 @@ schema MissingDeclaration extends DeclarationStatement { impl MissingDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MissingDeclaration { + pub fn __all__(db: JavascriptDB) -> *MissingDeclaration { for (tmp in DeclarationStatement(db)) { if (isMissingDeclaration(Node {id: tmp.id})) { yield MissingDeclaration { @@ -1117,7 +1117,7 @@ schema CaseClause extends Statement { impl CaseClause { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CaseClause { + pub fn __all__(db: JavascriptDB) -> *CaseClause { for (tmp in Statement(db)) { if (isCaseClause(Node {id: tmp.id})) { yield CaseClause { @@ -1172,7 +1172,7 @@ schema DefaultClause extends Statement { impl DefaultClause { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DefaultClause { + pub fn __all__(db: JavascriptDB) -> *DefaultClause { for (tmp in Statement(db)) { if (isDefaultClause(Node {id: tmp.id})) { yield DefaultClause { @@ -1215,7 +1215,7 @@ schema CatchClause extends Statement { impl CatchClause { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CatchClause { + pub fn __all__(db: JavascriptDB) -> *CatchClause { for (tmp in Statement(db)) { if (isCatchClause(Node {id: tmp.id})) { yield CatchClause { @@ -1268,7 +1268,7 @@ schema CaseBlock extends Statement { impl CaseBlock { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CaseBlock { + pub fn __all__(db: JavascriptDB) -> *CaseBlock { for (tmp in Statement(db)) { if (isCaseBlock(Node {id: tmp.id})) { yield CaseBlock { @@ -1384,7 +1384,7 @@ schema SwitchStatement extends Statement { impl SwitchStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SwitchStatement { + pub fn __all__(db: JavascriptDB) -> *SwitchStatement { for (tmp in Statement(db)) { if (isSwitchStatement(Node {id: tmp.id})) { yield SwitchStatement { @@ -1420,7 +1420,7 @@ schema ThrowStatement extends Statement { impl ThrowStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ThrowStatement { + pub fn __all__(db: JavascriptDB) -> *ThrowStatement { for (tmp in Statement(db)) { if (isThrowStatement(Node {id: tmp.id})) { yield ThrowStatement { @@ -1451,7 +1451,7 @@ schema TryStatement extends Statement { impl TryStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TryStatement { + pub fn __all__(db: JavascriptDB) -> *TryStatement { for (tmp in Statement(db)) { if (isTryStatement(Node {id: tmp.id})) { yield TryStatement { @@ -1521,7 +1521,7 @@ schema DebuggerStatement extends Statement { impl DebuggerStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DebuggerStatement { + pub fn __all__(db: JavascriptDB) -> *DebuggerStatement { for (tmp in Statement(db)) { if (isDebuggerStatement(Node {id: tmp.id})) { yield DebuggerStatement { @@ -1542,7 +1542,7 @@ schema NotEmittedStatement extends Statement { impl NotEmittedStatement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NotEmittedStatement { + pub fn __all__(db: JavascriptDB) -> *NotEmittedStatement { for (tmp in Statement(db)) { if (isNotEmittedStatement(Node {id: tmp.id})) { yield NotEmittedStatement { @@ -1563,7 +1563,7 @@ schema MergeDeclarationMarker extends Statement { impl MergeDeclarationMarker { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MergeDeclarationMarker { + pub fn __all__(db: JavascriptDB) -> *MergeDeclarationMarker { for (tmp in Statement(db)) { if (isMergeDeclarationMarker(Node {id: tmp.id})) { yield MergeDeclarationMarker { @@ -1584,7 +1584,7 @@ schema EndOfDeclarationMarker extends Statement { impl EndOfDeclarationMarker { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EndOfDeclarationMarker { + pub fn __all__(db: JavascriptDB) -> *EndOfDeclarationMarker { for (tmp in Statement(db)) { if (isEndOfDeclarationMarker(Node {id: tmp.id})) { yield EndOfDeclarationMarker { diff --git a/language/javascript/lib/Symbol.gdl b/language/javascript/lib/Symbol.gdl index 4ff2b4cc..38dc98c7 100644 --- a/language/javascript/lib/Symbol.gdl +++ b/language/javascript/lib/Symbol.gdl @@ -12,7 +12,7 @@ schema Symbol extends SymbolDO { impl Symbol { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Symbol { + pub fn __all__(db: JavascriptDB) -> *Symbol { for (tmp in SymbolDO(db)) { yield Symbol { oid : tmp.oid, diff --git a/language/javascript/lib/Template.gdl b/language/javascript/lib/Template.gdl index c26f6398..9fe3e5c8 100644 --- a/language/javascript/lib/Template.gdl +++ b/language/javascript/lib/Template.gdl @@ -12,7 +12,7 @@ schema TemplateLiteralLikeNode extends Node { impl TemplateLiteralLikeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateLiteralLikeNode { + pub fn __all__(db: JavascriptDB) -> *TemplateLiteralLikeNode { for (tmp in Node(db)) { if (isTemplateLiteralLikeNode(tmp)) { yield TemplateLiteralLikeNode { @@ -45,7 +45,7 @@ schema TemplateHead extends TemplateLiteralLikeNode { impl TemplateHead { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateHead { + pub fn __all__(db: JavascriptDB) -> *TemplateHead { for (tmp in TemplateLiteralLikeNode(db)) { if (isTemplateHead(Node {id: tmp.id})) { yield TemplateHead { @@ -65,7 +65,7 @@ schema TemplateMiddle extends TemplateLiteralLikeNode { impl TemplateMiddle { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateMiddle { + pub fn __all__(db: JavascriptDB) -> *TemplateMiddle { for (tmp in TemplateLiteralLikeNode(db)) { if (isTemplateMiddle(Node {id: tmp.id})) { yield TemplateMiddle { @@ -85,7 +85,7 @@ schema TemplateTail extends TemplateLiteralLikeNode { impl TemplateTail { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateTail { + pub fn __all__(db: JavascriptDB) -> *TemplateTail { for (tmp in TemplateLiteralLikeNode(db)) { if (isTemplateTail(Node {id: tmp.id})) { yield TemplateTail { @@ -105,7 +105,7 @@ schema TemplateSpan extends Node { impl TemplateSpan { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateSpan { + pub fn __all__(db: JavascriptDB) -> *TemplateSpan { for (tmp in Node(db)) { if (isTemplateSpan(tmp)) { yield TemplateSpan { diff --git a/language/javascript/lib/Token.gdl b/language/javascript/lib/Token.gdl index 1f17d8c5..00516d4d 100644 --- a/language/javascript/lib/Token.gdl +++ b/language/javascript/lib/Token.gdl @@ -12,7 +12,7 @@ schema Token extends Node { impl Token { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Token { + pub fn __all__(db: JavascriptDB) -> *Token { for (tmp in Node(db)) { if (isToken(tmp)) { yield Token { @@ -32,7 +32,7 @@ schema Unknown extends Token { impl Unknown { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *Unknown { + pub fn __all__(db: JavascriptDB) -> *Unknown { for (tmp in Token(db)) { if (isUnknown(Node {id: tmp.id})) { yield Unknown { @@ -52,7 +52,7 @@ schema EndOfFileToken extends Token { impl EndOfFileToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EndOfFileToken { + pub fn __all__(db: JavascriptDB) -> *EndOfFileToken { for (tmp in Token(db)) { if (isEndOfFileToken(Node {id: tmp.id})) { yield EndOfFileToken { @@ -72,7 +72,7 @@ schema NumericLiteralToken extends Token { impl NumericLiteralToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NumericLiteralToken { + pub fn __all__(db: JavascriptDB) -> *NumericLiteralToken { for (tmp in Token(db)) { if (isNumericLiteral(Node {id: tmp.id})) { yield NumericLiteralToken { @@ -92,7 +92,7 @@ schema BigIntLiteralToken extends Token { impl BigIntLiteralToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BigIntLiteralToken { + pub fn __all__(db: JavascriptDB) -> *BigIntLiteralToken { for (tmp in Token(db)) { if (isBigIntLiteral(Node {id: tmp.id})) { yield BigIntLiteralToken { @@ -112,7 +112,7 @@ schema StringLiteralToken extends Token { impl StringLiteralToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StringLiteralToken { + pub fn __all__(db: JavascriptDB) -> *StringLiteralToken { for (tmp in Token(db)) { if (isStringLiteral(Node {id: tmp.id})) { yield StringLiteralToken { @@ -132,7 +132,7 @@ schema JsxTextToken extends Token { impl JsxTextToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *JsxTextToken { + pub fn __all__(db: JavascriptDB) -> *JsxTextToken { for (tmp in Token(db)) { if (isJsxText(Node {id: tmp.id})) { yield JsxTextToken { @@ -152,7 +152,7 @@ schema RegularExpressionLiteralToken extends Token { impl RegularExpressionLiteralToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RegularExpressionLiteralToken { + pub fn __all__(db: JavascriptDB) -> *RegularExpressionLiteralToken { for (tmp in Token(db)) { if (isRegularExpressionLiteral(Node {id: tmp.id})) { yield RegularExpressionLiteralToken { @@ -172,7 +172,7 @@ schema NoSubstitutionTemplateLiteralToken extends Token { impl NoSubstitutionTemplateLiteralToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NoSubstitutionTemplateLiteralToken { + pub fn __all__(db: JavascriptDB) -> *NoSubstitutionTemplateLiteralToken { for (tmp in Token(db)) { if (isNoSubstitutionTemplateLiteral(Node {id: tmp.id})) { yield NoSubstitutionTemplateLiteralToken { @@ -192,7 +192,7 @@ schema TemplateHeadToken extends Token { impl TemplateHeadToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateHeadToken { + pub fn __all__(db: JavascriptDB) -> *TemplateHeadToken { for (tmp in Token(db)) { if (isTemplateHead(Node {id: tmp.id})) { yield TemplateHeadToken { @@ -212,7 +212,7 @@ schema TemplateMiddleToken extends Token { impl TemplateMiddleToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateMiddleToken { + pub fn __all__(db: JavascriptDB) -> *TemplateMiddleToken { for (tmp in Token(db)) { if (isTemplateMiddle(Node {id: tmp.id})) { yield TemplateMiddleToken { @@ -232,7 +232,7 @@ schema TemplateTailToken extends Token { impl TemplateTailToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateTailToken { + pub fn __all__(db: JavascriptDB) -> *TemplateTailToken { for (tmp in Token(db)) { if (isTemplateTail(Node {id: tmp.id})) { yield TemplateTailToken { @@ -252,7 +252,7 @@ schema DotDotDotToken extends Token { impl DotDotDotToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *DotDotDotToken { + pub fn __all__(db: JavascriptDB) -> *DotDotDotToken { for (tmp in Token(db)) { if (isDotDotDotToken(Node {id: tmp.id})) { yield DotDotDotToken { @@ -272,7 +272,7 @@ schema CommaToken extends Token { impl CommaToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CommaToken { + pub fn __all__(db: JavascriptDB) -> *CommaToken { for (tmp in Token(db)) { if (isCommaToken(Node {id: tmp.id})) { yield CommaToken { @@ -292,7 +292,7 @@ schema QuestionDotToken extends Token { impl QuestionDotToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *QuestionDotToken { + pub fn __all__(db: JavascriptDB) -> *QuestionDotToken { for (tmp in Token(db)) { if (isQuestionDotToken(Node {id: tmp.id})) { yield QuestionDotToken { @@ -312,7 +312,7 @@ schema LessThanToken extends Token { impl LessThanToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanToken { + pub fn __all__(db: JavascriptDB) -> *LessThanToken { for (tmp in Token(db)) { if (isLessThanToken(Node {id: tmp.id})) { yield LessThanToken { @@ -332,7 +332,7 @@ schema GreaterThanToken extends Token { impl GreaterThanToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanToken { for (tmp in Token(db)) { if (isGreaterThanToken(Node {id: tmp.id})) { yield GreaterThanToken { @@ -352,7 +352,7 @@ schema LessThanEqualsToken extends Token { impl LessThanEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanEqualsToken { + pub fn __all__(db: JavascriptDB) -> *LessThanEqualsToken { for (tmp in Token(db)) { if (isLessThanEqualsToken(Node {id: tmp.id})) { yield LessThanEqualsToken { @@ -372,7 +372,7 @@ schema GreaterThanEqualsToken extends Token { impl GreaterThanEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanEqualsToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanEqualsToken { for (tmp in Token(db)) { if (isGreaterThanEqualsToken(Node {id: tmp.id})) { yield GreaterThanEqualsToken { @@ -392,7 +392,7 @@ schema EqualsEqualsToken extends Token { impl EqualsEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualsEqualsToken { + pub fn __all__(db: JavascriptDB) -> *EqualsEqualsToken { for (tmp in Token(db)) { if (isEqualsEqualsToken(Node {id: tmp.id})) { yield EqualsEqualsToken { @@ -412,7 +412,7 @@ schema ExclamationEqualsToken extends Token { impl ExclamationEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExclamationEqualsToken { + pub fn __all__(db: JavascriptDB) -> *ExclamationEqualsToken { for (tmp in Token(db)) { if (isExclamationEqualsToken(Node {id: tmp.id})) { yield ExclamationEqualsToken { @@ -432,7 +432,7 @@ schema EqualsEqualsEqualsToken extends Token { impl EqualsEqualsEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualsEqualsEqualsToken { + pub fn __all__(db: JavascriptDB) -> *EqualsEqualsEqualsToken { for (tmp in Token(db)) { if (isEqualsEqualsEqualsToken(Node {id: tmp.id})) { yield EqualsEqualsEqualsToken { @@ -452,7 +452,7 @@ schema ExclamationEqualsEqualsToken extends Token { impl ExclamationEqualsEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExclamationEqualsEqualsToken { + pub fn __all__(db: JavascriptDB) -> *ExclamationEqualsEqualsToken { for (tmp in Token(db)) { if (isExclamationEqualsEqualsToken(Node {id: tmp.id})) { yield ExclamationEqualsEqualsToken { @@ -472,7 +472,7 @@ schema PlusToken extends Token { impl PlusToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PlusToken { + pub fn __all__(db: JavascriptDB) -> *PlusToken { for (tmp in Token(db)) { if (isPlusToken(Node {id: tmp.id})) { yield PlusToken { @@ -492,7 +492,7 @@ schema MinusToken extends Token { impl MinusToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MinusToken { + pub fn __all__(db: JavascriptDB) -> *MinusToken { for (tmp in Token(db)) { if (isMinusToken(Node {id: tmp.id})) { yield MinusToken { @@ -512,7 +512,7 @@ schema AsteriskToken extends Token { impl AsteriskToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsteriskToken { + pub fn __all__(db: JavascriptDB) -> *AsteriskToken { for (tmp in Token(db)) { if (isAsteriskToken(Node {id: tmp.id})) { yield AsteriskToken { @@ -532,7 +532,7 @@ schema AsteriskAsteriskToken extends Token { impl AsteriskAsteriskToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsteriskAsteriskToken { + pub fn __all__(db: JavascriptDB) -> *AsteriskAsteriskToken { for (tmp in Token(db)) { if (isAsteriskAsteriskToken(Node {id: tmp.id})) { yield AsteriskAsteriskToken { @@ -552,7 +552,7 @@ schema SlashToken extends Token { impl SlashToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SlashToken { + pub fn __all__(db: JavascriptDB) -> *SlashToken { for (tmp in Token(db)) { if (isSlashToken(Node {id: tmp.id})) { yield SlashToken { @@ -572,7 +572,7 @@ schema PercentToken extends Token { impl PercentToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PercentToken { + pub fn __all__(db: JavascriptDB) -> *PercentToken { for (tmp in Token(db)) { if (isPercentToken(Node {id: tmp.id})) { yield PercentToken { @@ -592,7 +592,7 @@ schema PlusPlusToken extends Token { impl PlusPlusToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PlusPlusToken { + pub fn __all__(db: JavascriptDB) -> *PlusPlusToken { for (tmp in Token(db)) { if (isPlusPlusToken(Node {id: tmp.id})) { yield PlusPlusToken { @@ -612,7 +612,7 @@ schema MinusMinusToken extends Token { impl MinusMinusToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MinusMinusToken { + pub fn __all__(db: JavascriptDB) -> *MinusMinusToken { for (tmp in Token(db)) { if (isMinusMinusToken(Node {id: tmp.id})) { yield MinusMinusToken { @@ -632,7 +632,7 @@ schema LessThanLessThanToken extends Token { impl LessThanLessThanToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanLessThanToken { + pub fn __all__(db: JavascriptDB) -> *LessThanLessThanToken { for (tmp in Token(db)) { if (isLessThanLessThanToken(Node {id: tmp.id})) { yield LessThanLessThanToken { @@ -652,7 +652,7 @@ schema GreaterThanGreaterThanToken extends Token { impl GreaterThanGreaterThanToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanToken { for (tmp in Token(db)) { if (isGreaterThanGreaterThanToken(Node {id: tmp.id})) { yield GreaterThanGreaterThanToken { @@ -672,7 +672,7 @@ schema GreaterThanGreaterThanGreaterThanToken extends Token { impl GreaterThanGreaterThanGreaterThanToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanGreaterThanToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanGreaterThanToken { for (tmp in Token(db)) { if (isGreaterThanGreaterThanGreaterThanToken(Node {id: tmp.id})) { yield GreaterThanGreaterThanGreaterThanToken { @@ -692,7 +692,7 @@ schema AmpersandToken extends Token { impl AmpersandToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AmpersandToken { + pub fn __all__(db: JavascriptDB) -> *AmpersandToken { for (tmp in Token(db)) { if (isAmpersandToken(Node {id: tmp.id})) { yield AmpersandToken { @@ -712,7 +712,7 @@ schema BarToken extends Token { impl BarToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BarToken { + pub fn __all__(db: JavascriptDB) -> *BarToken { for (tmp in Token(db)) { if (isBarToken(Node {id: tmp.id})) { yield BarToken { @@ -732,7 +732,7 @@ schema CaretToken extends Token { impl CaretToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CaretToken { + pub fn __all__(db: JavascriptDB) -> *CaretToken { for (tmp in Token(db)) { if (isCaretToken(Node {id: tmp.id})) { yield CaretToken { @@ -752,7 +752,7 @@ schema ExclamationToken extends Token { impl ExclamationToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExclamationToken { + pub fn __all__(db: JavascriptDB) -> *ExclamationToken { for (tmp in Token(db)) { if (isExclamationToken(Node {id: tmp.id})) { yield ExclamationToken { @@ -772,7 +772,7 @@ schema TildeToken extends Token { impl TildeToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TildeToken { + pub fn __all__(db: JavascriptDB) -> *TildeToken { for (tmp in Token(db)) { if (isTildeToken(Node {id: tmp.id})) { yield TildeToken { @@ -792,7 +792,7 @@ schema AmpersandAmpersandToken extends Token { impl AmpersandAmpersandToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AmpersandAmpersandToken { + pub fn __all__(db: JavascriptDB) -> *AmpersandAmpersandToken { for (tmp in Token(db)) { if (isAmpersandAmpersandToken(Node {id: tmp.id})) { yield AmpersandAmpersandToken { @@ -812,7 +812,7 @@ schema BarBarToken extends Token { impl BarBarToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BarBarToken { + pub fn __all__(db: JavascriptDB) -> *BarBarToken { for (tmp in Token(db)) { if (isBarBarToken(Node {id: tmp.id})) { yield BarBarToken { @@ -832,7 +832,7 @@ schema QuestionToken extends Token { impl QuestionToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *QuestionToken { + pub fn __all__(db: JavascriptDB) -> *QuestionToken { for (tmp in Token(db)) { if (isQuestionToken(Node {id: tmp.id})) { yield QuestionToken { @@ -852,7 +852,7 @@ schema QuestionQuestionToken extends Token { impl QuestionQuestionToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *QuestionQuestionToken { + pub fn __all__(db: JavascriptDB) -> *QuestionQuestionToken { for (tmp in Token(db)) { if (isQuestionQuestionToken(Node {id: tmp.id})) { yield QuestionQuestionToken { @@ -872,7 +872,7 @@ schema EqualsToken extends Token { impl EqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualsToken { + pub fn __all__(db: JavascriptDB) -> *EqualsToken { for (tmp in Token(db)) { if (isEqualsToken(Node {id: tmp.id})) { yield EqualsToken { @@ -892,7 +892,7 @@ schema PlusEqualsToken extends Token { impl PlusEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PlusEqualsToken { + pub fn __all__(db: JavascriptDB) -> *PlusEqualsToken { for (tmp in Token(db)) { if (isPlusEqualsToken(Node {id: tmp.id})) { yield PlusEqualsToken { @@ -912,7 +912,7 @@ schema MinusEqualsToken extends Token { impl MinusEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MinusEqualsToken { + pub fn __all__(db: JavascriptDB) -> *MinusEqualsToken { for (tmp in Token(db)) { if (isMinusEqualsToken(Node {id: tmp.id})) { yield MinusEqualsToken { @@ -932,7 +932,7 @@ schema AsteriskEqualsToken extends Token { impl AsteriskEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsteriskEqualsToken { + pub fn __all__(db: JavascriptDB) -> *AsteriskEqualsToken { for (tmp in Token(db)) { if (isAsteriskEqualsToken(Node {id: tmp.id})) { yield AsteriskEqualsToken { @@ -952,7 +952,7 @@ schema AsteriskAsteriskEqualsToken extends Token { impl AsteriskAsteriskEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AsteriskAsteriskEqualsToken { + pub fn __all__(db: JavascriptDB) -> *AsteriskAsteriskEqualsToken { for (tmp in Token(db)) { if (isAsteriskAsteriskEqualsToken(Node {id: tmp.id})) { yield AsteriskAsteriskEqualsToken { @@ -972,7 +972,7 @@ schema SlashEqualsToken extends Token { impl SlashEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SlashEqualsToken { + pub fn __all__(db: JavascriptDB) -> *SlashEqualsToken { for (tmp in Token(db)) { if (isSlashEqualsToken(Node {id: tmp.id})) { yield SlashEqualsToken { @@ -992,7 +992,7 @@ schema PercentEqualsToken extends Token { impl PercentEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PercentEqualsToken { + pub fn __all__(db: JavascriptDB) -> *PercentEqualsToken { for (tmp in Token(db)) { if (isPercentEqualsToken(Node {id: tmp.id})) { yield PercentEqualsToken { @@ -1012,7 +1012,7 @@ schema LessThanLessThanEqualsToken extends Token { impl LessThanLessThanEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LessThanLessThanEqualsToken { + pub fn __all__(db: JavascriptDB) -> *LessThanLessThanEqualsToken { for (tmp in Token(db)) { if (isLessThanLessThanEqualsToken(Node {id: tmp.id})) { yield LessThanLessThanEqualsToken { @@ -1032,7 +1032,7 @@ schema GreaterThanGreaterThanEqualsToken extends Token { impl GreaterThanGreaterThanEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanEqualsToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanEqualsToken { for (tmp in Token(db)) { if (isGreaterThanGreaterThanEqualsToken(Node {id: tmp.id})) { yield GreaterThanGreaterThanEqualsToken { @@ -1052,7 +1052,7 @@ schema GreaterThanGreaterThanGreaterThanEqualsToken extends Token { impl GreaterThanGreaterThanGreaterThanEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanGreaterThanEqualsToken { + pub fn __all__(db: JavascriptDB) -> *GreaterThanGreaterThanGreaterThanEqualsToken { for (tmp in Token(db)) { if (isGreaterThanGreaterThanGreaterThanEqualsToken(Node {id: tmp.id})) { yield GreaterThanGreaterThanGreaterThanEqualsToken { @@ -1072,7 +1072,7 @@ schema AmpersandEqualsToken extends Token { impl AmpersandEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AmpersandEqualsToken { + pub fn __all__(db: JavascriptDB) -> *AmpersandEqualsToken { for (tmp in Token(db)) { if (isAmpersandEqualsToken(Node {id: tmp.id})) { yield AmpersandEqualsToken { @@ -1092,7 +1092,7 @@ schema BarEqualsToken extends Token { impl BarEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BarEqualsToken { + pub fn __all__(db: JavascriptDB) -> *BarEqualsToken { for (tmp in Token(db)) { if (isBarEqualsToken(Node {id: tmp.id})) { yield BarEqualsToken { @@ -1112,7 +1112,7 @@ schema BarBarEqualsToken extends Token { impl BarBarEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BarBarEqualsToken { + pub fn __all__(db: JavascriptDB) -> *BarBarEqualsToken { for (tmp in Token(db)) { if (isBarBarEqualsToken(Node {id: tmp.id})) { yield BarBarEqualsToken { @@ -1132,7 +1132,7 @@ schema AmpersandAmpersandEqualsToken extends Token { impl AmpersandAmpersandEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AmpersandAmpersandEqualsToken { + pub fn __all__(db: JavascriptDB) -> *AmpersandAmpersandEqualsToken { for (tmp in Token(db)) { if (isAmpersandAmpersandEqualsToken(Node {id: tmp.id})) { yield AmpersandAmpersandEqualsToken { @@ -1152,7 +1152,7 @@ schema QuestionQuestionEqualsToken extends Token { impl QuestionQuestionEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *QuestionQuestionEqualsToken { + pub fn __all__(db: JavascriptDB) -> *QuestionQuestionEqualsToken { for (tmp in Token(db)) { if (isQuestionQuestionEqualsToken(Node {id: tmp.id})) { yield QuestionQuestionEqualsToken { @@ -1172,7 +1172,7 @@ schema CaretEqualsToken extends Token { impl CaretEqualsToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CaretEqualsToken { + pub fn __all__(db: JavascriptDB) -> *CaretEqualsToken { for (tmp in Token(db)) { if (isCaretEqualsToken(Node {id: tmp.id})) { yield CaretEqualsToken { @@ -1192,7 +1192,7 @@ schema IdentifierToken extends Token { impl IdentifierToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IdentifierToken { + pub fn __all__(db: JavascriptDB) -> *IdentifierToken { for (tmp in Token(db)) { if (isIdentifier(Node {id: tmp.id})) { yield IdentifierToken { @@ -1212,7 +1212,7 @@ schema PrivateIdentifierToken extends Token { impl PrivateIdentifierToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrivateIdentifierToken { + pub fn __all__(db: JavascriptDB) -> *PrivateIdentifierToken { for (tmp in Token(db)) { if (isPrivateIdentifier(Node {id: tmp.id})) { yield PrivateIdentifierToken { @@ -1232,7 +1232,7 @@ schema ExtendsKeyword extends Token { impl ExtendsKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExtendsKeyword { + pub fn __all__(db: JavascriptDB) -> *ExtendsKeyword { for (tmp in Token(db)) { if (isExtendsKeyword(Node {id: tmp.id})) { yield ExtendsKeyword { @@ -1252,7 +1252,7 @@ schema FalseKeyword extends Token { impl FalseKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FalseKeyword { + pub fn __all__(db: JavascriptDB) -> *FalseKeyword { for (tmp in Token(db)) { if (isFalseKeyword(Node {id: tmp.id})) { yield FalseKeyword { @@ -1272,7 +1272,7 @@ schema ImportKeyword extends Token { impl ImportKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportKeyword { + pub fn __all__(db: JavascriptDB) -> *ImportKeyword { for (tmp in Token(db)) { if (isImportKeyword(Node {id: tmp.id})) { yield ImportKeyword { @@ -1292,7 +1292,7 @@ schema InKeyword extends Token { impl InKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InKeyword { + pub fn __all__(db: JavascriptDB) -> *InKeyword { for (tmp in Token(db)) { if (isInKeyword(Node {id: tmp.id})) { yield InKeyword { @@ -1312,7 +1312,7 @@ schema InstanceOfKeyword extends Token { impl InstanceOfKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InstanceOfKeyword { + pub fn __all__(db: JavascriptDB) -> *InstanceOfKeyword { for (tmp in Token(db)) { if (isInstanceOfKeyword(Node {id: tmp.id})) { yield InstanceOfKeyword { @@ -1332,7 +1332,7 @@ schema NullKeyword extends Token { impl NullKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NullKeyword { + pub fn __all__(db: JavascriptDB) -> *NullKeyword { for (tmp in Token(db)) { if (isNullKeyword(Node {id: tmp.id})) { yield NullKeyword { @@ -1352,7 +1352,7 @@ schema SuperKeyword extends Token { impl SuperKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SuperKeyword { + pub fn __all__(db: JavascriptDB) -> *SuperKeyword { for (tmp in Token(db)) { if (isSuperKeyword(Node {id: tmp.id})) { yield SuperKeyword { @@ -1372,7 +1372,7 @@ schema ThisKeyword extends Token { impl ThisKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ThisKeyword { + pub fn __all__(db: JavascriptDB) -> *ThisKeyword { for (tmp in Token(db)) { if (isThisKeyword(Node {id: tmp.id})) { yield ThisKeyword { @@ -1392,7 +1392,7 @@ schema TrueKeyword extends Token { impl TrueKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TrueKeyword { + pub fn __all__(db: JavascriptDB) -> *TrueKeyword { for (tmp in Token(db)) { if (isTrueKeyword(Node {id: tmp.id})) { yield TrueKeyword { @@ -1412,7 +1412,7 @@ schema VoidKeyword extends Token { impl VoidKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *VoidKeyword { + pub fn __all__(db: JavascriptDB) -> *VoidKeyword { for (tmp in Token(db)) { if (isVoidKeyword(Node {id: tmp.id})) { yield VoidKeyword { @@ -1432,7 +1432,7 @@ schema ImplementsKeyword extends Token { impl ImplementsKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImplementsKeyword { + pub fn __all__(db: JavascriptDB) -> *ImplementsKeyword { for (tmp in Token(db)) { if (isImplementsKeyword(Node {id: tmp.id})) { yield ImplementsKeyword { @@ -1452,7 +1452,7 @@ schema AnyKeyword extends Token { impl AnyKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AnyKeyword { + pub fn __all__(db: JavascriptDB) -> *AnyKeyword { for (tmp in Token(db)) { if (isAnyKeyword(Node {id: tmp.id})) { yield AnyKeyword { @@ -1472,7 +1472,7 @@ schema AwaitKeyword extends Token { impl AwaitKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AwaitKeyword { + pub fn __all__(db: JavascriptDB) -> *AwaitKeyword { for (tmp in Token(db)) { if (isAwaitKeyword(Node {id: tmp.id})) { yield AwaitKeyword { @@ -1492,7 +1492,7 @@ schema BooleanKeyword extends Token { impl BooleanKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BooleanKeyword { + pub fn __all__(db: JavascriptDB) -> *BooleanKeyword { for (tmp in Token(db)) { if (isBooleanKeyword(Node {id: tmp.id})) { yield BooleanKeyword { @@ -1512,7 +1512,7 @@ schema IntrinsicKeyword extends Token { impl IntrinsicKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IntrinsicKeyword { + pub fn __all__(db: JavascriptDB) -> *IntrinsicKeyword { for (tmp in Token(db)) { if (isIntrinsicKeyword(Node {id: tmp.id})) { yield IntrinsicKeyword { @@ -1532,7 +1532,7 @@ schema NeverKeyword extends Token { impl NeverKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NeverKeyword { + pub fn __all__(db: JavascriptDB) -> *NeverKeyword { for (tmp in Token(db)) { if (isNeverKeyword(Node {id: tmp.id})) { yield NeverKeyword { @@ -1552,7 +1552,7 @@ schema NumberKeyword extends Token { impl NumberKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NumberKeyword { + pub fn __all__(db: JavascriptDB) -> *NumberKeyword { for (tmp in Token(db)) { if (isNumberKeyword(Node {id: tmp.id})) { yield NumberKeyword { @@ -1572,7 +1572,7 @@ schema ObjectKeyword extends Token { impl ObjectKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ObjectKeyword { + pub fn __all__(db: JavascriptDB) -> *ObjectKeyword { for (tmp in Token(db)) { if (isObjectKeyword(Node {id: tmp.id})) { yield ObjectKeyword { @@ -1592,7 +1592,7 @@ schema StringKeyword extends Token { impl StringKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *StringKeyword { + pub fn __all__(db: JavascriptDB) -> *StringKeyword { for (tmp in Token(db)) { if (isStringKeyword(Node {id: tmp.id})) { yield StringKeyword { @@ -1612,7 +1612,7 @@ schema SymbolKeyword extends Token { impl SymbolKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *SymbolKeyword { + pub fn __all__(db: JavascriptDB) -> *SymbolKeyword { for (tmp in Token(db)) { if (isSymbolKeyword(Node {id: tmp.id})) { yield SymbolKeyword { @@ -1632,7 +1632,7 @@ schema UndefinedKeyword extends Token { impl UndefinedKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UndefinedKeyword { + pub fn __all__(db: JavascriptDB) -> *UndefinedKeyword { for (tmp in Token(db)) { if (isUndefinedKeyword(Node {id: tmp.id})) { yield UndefinedKeyword { @@ -1652,7 +1652,7 @@ schema UnknownKeyword extends Token { impl UnknownKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnknownKeyword { + pub fn __all__(db: JavascriptDB) -> *UnknownKeyword { for (tmp in Token(db)) { if (isUnknownKeyword(Node {id: tmp.id})) { yield UnknownKeyword { @@ -1672,7 +1672,7 @@ schema BigIntKeyword extends Token { impl BigIntKeyword { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BigIntKeyword { + pub fn __all__(db: JavascriptDB) -> *BigIntKeyword { for (tmp in Token(db)) { if (isBigIntKeyword(Node {id: tmp.id})) { yield BigIntKeyword { @@ -1692,7 +1692,7 @@ schema PrefixUnaryOperator extends Token { impl PrefixUnaryOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PrefixUnaryOperator { + pub fn __all__(db: JavascriptDB) -> *PrefixUnaryOperator { for (tmp in Token(db)) { if (isPrefixUnaryOperator(Node {id: tmp.id})) { yield PrefixUnaryOperator { @@ -1712,7 +1712,7 @@ schema PostfixUnaryOperator extends Token { impl PostfixUnaryOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PostfixUnaryOperator { + pub fn __all__(db: JavascriptDB) -> *PostfixUnaryOperator { for (tmp in Token(db)) { if (isPostfixUnaryOperator(Node {id: tmp.id})) { yield PostfixUnaryOperator { @@ -1732,7 +1732,7 @@ schema UpdateOperator extends Token { impl UpdateOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UpdateOperator { + pub fn __all__(db: JavascriptDB) -> *UpdateOperator { for (tmp in Token(db)) { if (isUpdateOperator(Node {id: tmp.id})) { yield UpdateOperator { @@ -1752,7 +1752,7 @@ schema ExponentiationOperator extends Token { impl ExponentiationOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExponentiationOperator { + pub fn __all__(db: JavascriptDB) -> *ExponentiationOperator { for (tmp in Token(db)) { if (isExponentiationOperator(Node {id: tmp.id})) { yield ExponentiationOperator { @@ -1772,7 +1772,7 @@ schema MultiplicativeOperator extends Token { impl MultiplicativeOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MultiplicativeOperator { + pub fn __all__(db: JavascriptDB) -> *MultiplicativeOperator { for (tmp in Token(db)) { if (isMultiplicativeOperator(Node {id: tmp.id})) { yield MultiplicativeOperator { @@ -1792,7 +1792,7 @@ schema AdditiveOperator extends Token { impl AdditiveOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AdditiveOperator { + pub fn __all__(db: JavascriptDB) -> *AdditiveOperator { for (tmp in Token(db)) { if (isAdditiveOperator(Node {id: tmp.id})) { yield AdditiveOperator { @@ -1812,7 +1812,7 @@ schema ShiftOperator extends Token { impl ShiftOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ShiftOperator { + pub fn __all__(db: JavascriptDB) -> *ShiftOperator { for (tmp in Token(db)) { if (isShiftOperator(Node {id: tmp.id})) { yield ShiftOperator { @@ -1832,7 +1832,7 @@ schema RelationalOperator extends Token { impl RelationalOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RelationalOperator { + pub fn __all__(db: JavascriptDB) -> *RelationalOperator { for (tmp in Token(db)) { if (isRelationalOperator(Node {id: tmp.id})) { yield RelationalOperator { @@ -1852,7 +1852,7 @@ schema EqualityOperator extends Token { impl EqualityOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *EqualityOperator { + pub fn __all__(db: JavascriptDB) -> *EqualityOperator { for (tmp in Token(db)) { if (isEqualityOperator(Node {id: tmp.id})) { yield EqualityOperator { @@ -1872,7 +1872,7 @@ schema BinaryBitwiseOperator extends Token { impl BinaryBitwiseOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryBitwiseOperator { + pub fn __all__(db: JavascriptDB) -> *BinaryBitwiseOperator { for (tmp in Token(db)) { if (isBinaryBitwiseOperator(Node {id: tmp.id})) { yield BinaryBitwiseOperator { @@ -1892,7 +1892,7 @@ schema BinaryLogicalOperator extends Token { impl BinaryLogicalOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryLogicalOperator { + pub fn __all__(db: JavascriptDB) -> *BinaryLogicalOperator { for (tmp in Token(db)) { if (isBinaryLogicalOperator(Node {id: tmp.id})) { yield BinaryLogicalOperator { @@ -1914,7 +1914,7 @@ schema CompoundAssignmentOperator extends Token { impl CompoundAssignmentOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CompoundAssignmentOperator { + pub fn __all__(db: JavascriptDB) -> *CompoundAssignmentOperator { for (tmp in Token(db)) { if (isCompoundAssignmentOperator(Node {id: tmp.id})) { yield CompoundAssignmentOperator { @@ -1934,7 +1934,7 @@ schema AssignmentOperator extends Token { impl AssignmentOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *AssignmentOperator { + pub fn __all__(db: JavascriptDB) -> *AssignmentOperator { for (tmp in Token(db)) { if (isAssignmentOperator(Node {id: tmp.id})) { yield AssignmentOperator { @@ -1954,7 +1954,7 @@ schema BinaryOperator extends Token { impl BinaryOperator { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *BinaryOperator { + pub fn __all__(db: JavascriptDB) -> *BinaryOperator { for (tmp in Token(db)) { if (isBinaryOperator(Node {id: tmp.id})) { yield BinaryOperator { @@ -1974,7 +1974,7 @@ schema KeywordToken extends Token { impl KeywordToken { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *KeywordToken { + pub fn __all__(db: JavascriptDB) -> *KeywordToken { for (tmp in Token(db)) { if (isKeywordToken(Node {id: tmp.id})) { yield KeywordToken { diff --git a/language/javascript/lib/TopLevel.gdl b/language/javascript/lib/TopLevel.gdl index d9f5c9b8..b2cc63d4 100644 --- a/language/javascript/lib/TopLevel.gdl +++ b/language/javascript/lib/TopLevel.gdl @@ -9,7 +9,7 @@ schema TopLevel extends TopLevelDO { impl TopLevel { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TopLevel { + pub fn __all__(db: JavascriptDB) -> *TopLevel { for (tmp in TopLevelDO(db)) { yield TopLevel { oid : tmp.oid, diff --git a/language/javascript/lib/Type.gdl b/language/javascript/lib/Type.gdl index 91e24350..80bcd677 100644 --- a/language/javascript/lib/Type.gdl +++ b/language/javascript/lib/Type.gdl @@ -12,7 +12,7 @@ schema TypeNode extends Node { impl TypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeNode { + pub fn __all__(db: JavascriptDB) -> *TypeNode { for (tmp in Node(db)) { if (isTypeNode(tmp)) { yield TypeNode { @@ -32,7 +32,7 @@ schema KeywordTypeNode extends TypeNode { impl KeywordTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *KeywordTypeNode { + pub fn __all__(db: JavascriptDB) -> *KeywordTypeNode { for (tmp in TypeNode(db)) { if (isKeywordTypeNode(Node {id: tmp.id})) { yield KeywordTypeNode { @@ -52,7 +52,7 @@ schema TypePredicateNode extends TypeNode { impl TypePredicateNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypePredicateNode { + pub fn __all__(db: JavascriptDB) -> *TypePredicateNode { for (tmp in TypeNode(db)) { if (isTypePredicate(Node {id: tmp.id})) { yield TypePredicateNode { @@ -72,7 +72,7 @@ schema FunctionTypeNode extends TypeNode { impl FunctionTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *FunctionTypeNode { + pub fn __all__(db: JavascriptDB) -> *FunctionTypeNode { for (tmp in TypeNode(db)) { if (isFunctionType(Node {id: tmp.id})) { yield FunctionTypeNode { @@ -92,7 +92,7 @@ schema ConstructorTypeNode extends TypeNode { impl ConstructorTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConstructorTypeNode { + pub fn __all__(db: JavascriptDB) -> *ConstructorTypeNode { for (tmp in TypeNode(db)) { if (isConstructorType(Node {id: tmp.id})) { yield ConstructorTypeNode { @@ -112,7 +112,7 @@ schema TypeQueryNode extends TypeNode { impl TypeQueryNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeQueryNode { + pub fn __all__(db: JavascriptDB) -> *TypeQueryNode { for (tmp in TypeNode(db)) { if (isTypeQuery(Node {id: tmp.id})) { yield TypeQueryNode { @@ -132,7 +132,7 @@ schema TypeLiteralNode extends TypeNode { impl TypeLiteralNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeLiteralNode { + pub fn __all__(db: JavascriptDB) -> *TypeLiteralNode { for (tmp in TypeNode(db)) { if (isTypeLiteral(Node {id: tmp.id})) { yield TypeLiteralNode { @@ -152,7 +152,7 @@ schema ArrayTypeNode extends TypeNode { impl ArrayTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ArrayTypeNode { + pub fn __all__(db: JavascriptDB) -> *ArrayTypeNode { for (tmp in TypeNode(db)) { if (isArrayType(Node {id: tmp.id})) { yield ArrayTypeNode { @@ -172,7 +172,7 @@ schema TupleTypeNode extends TypeNode { impl TupleTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TupleTypeNode { + pub fn __all__(db: JavascriptDB) -> *TupleTypeNode { for (tmp in TypeNode(db)) { if (isTupleType(Node {id: tmp.id})) { yield TupleTypeNode { @@ -192,7 +192,7 @@ schema OptionalTypeNode extends TypeNode { impl OptionalTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *OptionalTypeNode { + pub fn __all__(db: JavascriptDB) -> *OptionalTypeNode { for (tmp in TypeNode(db)) { if (isOptionalType(Node {id: tmp.id})) { yield OptionalTypeNode { @@ -212,7 +212,7 @@ schema RestTypeNode extends TypeNode { impl RestTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *RestTypeNode { + pub fn __all__(db: JavascriptDB) -> *RestTypeNode { for (tmp in TypeNode(db)) { if (isRestType(Node {id: tmp.id})) { yield RestTypeNode { @@ -232,7 +232,7 @@ schema UnionTypeNode extends TypeNode { impl UnionTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *UnionTypeNode { + pub fn __all__(db: JavascriptDB) -> *UnionTypeNode { for (tmp in TypeNode(db)) { if (isUnionType(Node {id: tmp.id})) { yield UnionTypeNode { @@ -270,7 +270,7 @@ schema IntersectionTypeNode extends TypeNode { impl IntersectionTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IntersectionTypeNode { + pub fn __all__(db: JavascriptDB) -> *IntersectionTypeNode { for (tmp in TypeNode(db)) { if (isIntersectionType(Node {id: tmp.id})) { yield IntersectionTypeNode { @@ -308,7 +308,7 @@ schema ConditionalTypeNode extends TypeNode { impl ConditionalTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConditionalTypeNode { + pub fn __all__(db: JavascriptDB) -> *ConditionalTypeNode { for (tmp in TypeNode(db)) { if (isConditionalType(Node {id: tmp.id})) { yield ConditionalTypeNode { @@ -360,7 +360,7 @@ schema InferTypeNode extends TypeNode { impl InferTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *InferTypeNode { + pub fn __all__(db: JavascriptDB) -> *InferTypeNode { for (tmp in TypeNode(db)) { if (isInferType(Node {id: tmp.id})) { yield InferTypeNode { @@ -380,7 +380,7 @@ schema ParenthesizedTypeNode extends TypeNode { impl ParenthesizedTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ParenthesizedTypeNode { + pub fn __all__(db: JavascriptDB) -> *ParenthesizedTypeNode { for (tmp in TypeNode(db)) { if (isParenthesizedType(Node {id: tmp.id})) { yield ParenthesizedTypeNode { @@ -400,7 +400,7 @@ schema ThisTypeNode extends TypeNode { impl ThisTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ThisTypeNode { + pub fn __all__(db: JavascriptDB) -> *ThisTypeNode { for (tmp in TypeNode(db)) { if (isThisType(Node {id: tmp.id})) { yield ThisTypeNode { @@ -420,7 +420,7 @@ schema TypeOperatorNode extends TypeNode { impl TypeOperatorNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeOperatorNode { + pub fn __all__(db: JavascriptDB) -> *TypeOperatorNode { for (tmp in TypeNode(db)) { if (isTypeOperator(Node {id: tmp.id})) { yield TypeOperatorNode { @@ -456,7 +456,7 @@ schema IndexedAccessTypeNode extends TypeNode { impl IndexedAccessTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IndexedAccessTypeNode { + pub fn __all__(db: JavascriptDB) -> *IndexedAccessTypeNode { for (tmp in TypeNode(db)) { if (isIndexedAccessType(Node {id: tmp.id})) { yield IndexedAccessTypeNode { @@ -492,7 +492,7 @@ schema MappedTypeNode extends TypeNode { impl MappedTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MappedTypeNode { + pub fn __all__(db: JavascriptDB) -> *MappedTypeNode { for (tmp in TypeNode(db)) { if (isMappedType(Node {id: tmp.id})) { yield MappedTypeNode { @@ -512,7 +512,7 @@ schema LiteralTypeNode extends TypeNode { impl LiteralTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *LiteralTypeNode { + pub fn __all__(db: JavascriptDB) -> *LiteralTypeNode { for (tmp in TypeNode(db)) { if (isLiteralType(Node {id: tmp.id})) { yield LiteralTypeNode { @@ -549,7 +549,7 @@ schema NamedTupleMember extends TypeNode { impl NamedTupleMember { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NamedTupleMember { + pub fn __all__(db: JavascriptDB) -> *NamedTupleMember { for (tmp in TypeNode(db)) { if (isNamedTupleMember(Node {id: tmp.id})) { yield NamedTupleMember { @@ -569,7 +569,7 @@ schema TemplateLiteralTypeNode extends TypeNode { impl TemplateLiteralTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateLiteralTypeNode { + pub fn __all__(db: JavascriptDB) -> *TemplateLiteralTypeNode { for (tmp in TypeNode(db)) { if (isTemplateLiteralType(Node {id: tmp.id})) { yield TemplateLiteralTypeNode { @@ -619,7 +619,7 @@ schema TemplateLiteralTypeSpan extends TypeNode { impl TemplateLiteralTypeSpan { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TemplateLiteralTypeSpan { + pub fn __all__(db: JavascriptDB) -> *TemplateLiteralTypeSpan { for (tmp in TypeNode(db)) { if (isTemplateLiteralTypeSpan(Node {id: tmp.id})) { yield TemplateLiteralTypeSpan { @@ -639,7 +639,7 @@ schema NodeWithTypeArguments extends TypeNode { impl NodeWithTypeArguments { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *NodeWithTypeArguments { + pub fn __all__(db: JavascriptDB) -> *NodeWithTypeArguments { for (tmp in TypeNode(db)) { if (isNodeWithTypeArguments(Node {id: tmp.id})) { yield NodeWithTypeArguments { @@ -659,7 +659,7 @@ schema TypeReferenceNode extends NodeWithTypeArguments { impl TypeReferenceNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeReferenceNode { + pub fn __all__(db: JavascriptDB) -> *TypeReferenceNode { for (tmp in NodeWithTypeArguments(db)) { if (isTypeReference(Node {id: tmp.id})) { yield TypeReferenceNode { @@ -690,7 +690,7 @@ schema ImportTypeNode extends NodeWithTypeArguments { impl ImportTypeNode { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ImportTypeNode { + pub fn __all__(db: JavascriptDB) -> *ImportTypeNode { for (tmp in NodeWithTypeArguments(db)) { if (isImportType(Node {id: tmp.id})) { yield ImportTypeNode { @@ -710,7 +710,7 @@ schema ExpressionWithTypeArguments extends NodeWithTypeArguments { impl ExpressionWithTypeArguments { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ExpressionWithTypeArguments { + pub fn __all__(db: JavascriptDB) -> *ExpressionWithTypeArguments { for (tmp in NodeWithTypeArguments(db)) { if (isExpressionWithTypeArguments(Node {id: tmp.id})) { yield ExpressionWithTypeArguments { @@ -730,7 +730,7 @@ schema TypeElement extends Node { impl TypeElement { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *TypeElement { + pub fn __all__(db: JavascriptDB) -> *TypeElement { for (tmp in Node(db)) { if (isTypeElement(tmp)) { yield TypeElement { @@ -750,7 +750,7 @@ schema PropertySignature extends TypeElement { impl PropertySignature { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *PropertySignature { + pub fn __all__(db: JavascriptDB) -> *PropertySignature { for (tmp in TypeElement(db)) { if (isPropertySignature(Node {id: tmp.id})) { yield PropertySignature { @@ -770,7 +770,7 @@ schema MethodSignature extends TypeElement { impl MethodSignature { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *MethodSignature { + pub fn __all__(db: JavascriptDB) -> *MethodSignature { for (tmp in TypeElement(db)) { if (isMethodSignature(Node {id: tmp.id})) { yield MethodSignature { @@ -790,7 +790,7 @@ schema CallSignatureDeclaration extends TypeElement { impl CallSignatureDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *CallSignatureDeclaration { + pub fn __all__(db: JavascriptDB) -> *CallSignatureDeclaration { for (tmp in TypeElement(db)) { if (isCallSignature(Node {id: tmp.id})) { yield CallSignatureDeclaration { @@ -810,7 +810,7 @@ schema ConstructSignatureDeclaration extends TypeElement { impl ConstructSignatureDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *ConstructSignatureDeclaration { + pub fn __all__(db: JavascriptDB) -> *ConstructSignatureDeclaration { for (tmp in TypeElement(db)) { if (isConstructSignature(Node {id: tmp.id})) { yield ConstructSignatureDeclaration { @@ -830,7 +830,7 @@ schema IndexSignatureDeclaration extends TypeElement { impl IndexSignatureDeclaration { @data_constraint @inline - fn __all__(db: JavascriptDB) -> *IndexSignatureDeclaration { + pub fn __all__(db: JavascriptDB) -> *IndexSignatureDeclaration { for (tmp in TypeElement(db)) { if (isIndexSignature(Node {id: tmp.id})) { yield IndexSignatureDeclaration { diff --git a/language/python/lib/Alias.gdl b/language/python/lib/Alias.gdl index f94aa2ab..33002c45 100644 --- a/language/python/lib/Alias.gdl +++ b/language/python/lib/Alias.gdl @@ -7,7 +7,7 @@ schema Alias extends AliasDO { impl Alias { @data_constraint @inline - fn __all__(db: PythonDB) -> *Alias { + pub fn __all__(db: PythonDB) -> *Alias { for (tmp in AliasDO(db)) { yield Alias { element_oid : tmp.element_oid, diff --git a/language/python/lib/Argument.gdl b/language/python/lib/Argument.gdl index 7c8f5143..8b8012a8 100644 --- a/language/python/lib/Argument.gdl +++ b/language/python/lib/Argument.gdl @@ -7,7 +7,7 @@ schema Arg extends ArgDO { impl Arg { @data_constraint @inline - fn __all__(db: PythonDB) -> *Arg { + pub fn __all__(db: PythonDB) -> *Arg { for (tmp in ArgDO(db)) { yield Arg { element_oid : tmp.element_oid, @@ -73,7 +73,7 @@ schema Arguments extends ArgumentsDO { impl Arguments { @data_constraint @inline - fn __all__(db: PythonDB) -> *Arguments { + pub fn __all__(db: PythonDB) -> *Arguments { for (tmp in ArgumentsDO(db)) { yield Arguments { element_oid : tmp.element_oid, diff --git a/language/python/lib/Class.gdl b/language/python/lib/Class.gdl index 92f5d517..a5e105f2 100644 --- a/language/python/lib/Class.gdl +++ b/language/python/lib/Class.gdl @@ -7,7 +7,7 @@ schema Class extends ClassDefStatement { impl Class { @data_constraint @inline - fn __all__(db: PythonDB) -> *Class { + pub fn __all__(db: PythonDB) -> *Class { for (tmp in ClassDefStatement(db)) { yield Class { element_oid : tmp.element_oid, @@ -146,7 +146,7 @@ schema ClassHierarchy extends ClassHierarchyDO { impl ClassHierarchy { @data_constraint @inline - fn __all__(db: PythonDB) -> *ClassHierarchy { + pub fn __all__(db: PythonDB) -> *ClassHierarchy { for (tmp in ClassHierarchyDO(db)) { yield ClassHierarchy { base_oid : tmp.base_oid, diff --git a/language/python/lib/Comprehension.gdl b/language/python/lib/Comprehension.gdl index db68de46..801aaa0e 100644 --- a/language/python/lib/Comprehension.gdl +++ b/language/python/lib/Comprehension.gdl @@ -7,7 +7,7 @@ schema Comprehension extends ComprehensionDO { impl Comprehension { @data_constraint @inline - fn __all__(db: PythonDB) -> *Comprehension { + pub fn __all__(db: PythonDB) -> *Comprehension { for (tmp in ComprehensionDO(db)) { yield Comprehension { element_oid : tmp.element_oid, diff --git a/language/python/lib/Container.gdl b/language/python/lib/Container.gdl index 026e7f73..9e7cc932 100644 --- a/language/python/lib/Container.gdl +++ b/language/python/lib/Container.gdl @@ -7,7 +7,7 @@ schema Program extends ProgramDO { impl Program { @data_constraint @inline - fn __all__(db: PythonDB) -> *Program { + pub fn __all__(db: PythonDB) -> *Program { for (tmp in ProgramDO(db)) { yield Program { program_oid : tmp.program_oid, @@ -25,7 +25,7 @@ schema File extends FileDO { impl File { @data_constraint @inline - fn __all__(db: PythonDB) -> *File { + pub fn __all__(db: PythonDB) -> *File { for (tmp in FileDO(db)) { yield File { element_oid : tmp.element_oid, @@ -71,7 +71,7 @@ schema Folder extends FolderDO { impl Folder { @data_constraint @inline - fn __all__(db: PythonDB) -> *Folder { + pub fn __all__(db: PythonDB) -> *Folder { for (tmp in FolderDO(db)) { yield Folder { element_oid : tmp.element_oid, @@ -116,7 +116,7 @@ schema ContainerParent extends ContainerParentDO { impl ContainerParent { @data_constraint @inline - fn __all__(db: PythonDB) -> *ContainerParent { + pub fn __all__(db: PythonDB) -> *ContainerParent { for (tmp in ContainerParentDO(db)) { yield ContainerParent { child_oid : tmp.child_oid, @@ -145,7 +145,7 @@ schema Module extends ModuleDO { impl Module { @data_constraint @inline - fn __all__(db: PythonDB) -> *Module { + pub fn __all__(db: PythonDB) -> *Module { for (tmp in ModuleDO(db)) { yield Module { element_oid : tmp.element_oid, @@ -198,7 +198,7 @@ schema Modified2To3File extends Modified2To3FileDO { impl Modified2To3File { @data_constraint @inline - fn __all__(db: PythonDB) -> *Modified2To3File { + pub fn __all__(db: PythonDB) -> *Modified2To3File { for (tmp in Modified2To3FileDO(db)) { yield Modified2To3File { element_oid : tmp.element_oid, @@ -216,7 +216,7 @@ schema ParseErrorFile extends ParseErrorFileDO { impl ParseErrorFile { @data_constraint @inline - fn __all__(db: PythonDB) -> *ParseErrorFile { + pub fn __all__(db: PythonDB) -> *ParseErrorFile { for (tmp in ParseErrorFileDO(db)) { yield ParseErrorFile { element_oid : tmp.element_oid, diff --git a/language/python/lib/DOClass.gdl b/language/python/lib/DOClass.gdl index 0feeb448..58837532 100644 --- a/language/python/lib/DOClass.gdl +++ b/language/python/lib/DOClass.gdl @@ -14,7 +14,7 @@ impl AliasDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AliasDO { - for (tmp in db.alias) { + for (tmp in db.alias) { yield AliasDO { element_oid : tmp.element_oid, name : tmp.name, @@ -24,7 +24,7 @@ impl AliasDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the name of this element. @@ -82,14 +82,14 @@ impl AnnotationAssignmentStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AnnotationAssignmentStatementDO { - for (tmp in db.annotation_assignment_statement) { + for (tmp in db.annotation_assignment_statement) { yield AnnotationAssignmentStatementDO { element_oid : tmp.element_oid, annotation_oid : tmp.annotation_oid, target_oid : tmp.target_oid, is_simple : tmp.is_simple } - } + } } /** * @brief gets the annotation oid of this element. @@ -129,7 +129,7 @@ impl ArgDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ArgDO { - for (tmp in db.arg) { + for (tmp in db.arg) { yield ArgDO { element_oid : tmp.element_oid, annotation : tmp.annotation, @@ -138,7 +138,7 @@ impl ArgDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the annotation of this element. @@ -188,13 +188,13 @@ impl ArgumentsDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ArgumentsDO { - for (tmp in db.arguments) { + for (tmp in db.arguments) { yield ArgumentsDO { element_oid : tmp.element_oid, parent_oid : tmp.parent_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the parent oid of this element. @@ -222,12 +222,12 @@ impl AssertStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AssertStatementDO { - for (tmp in db.assert_statement) { + for (tmp in db.assert_statement) { yield AssertStatementDO { element_oid : tmp.element_oid, assert_condition_oid : tmp.assert_condition_oid } - } + } } /** * @brief gets the assert condition oid of this element. @@ -249,13 +249,13 @@ impl AssignmentStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AssignmentStatementDO { - for (tmp in db.assignment_statement) { + for (tmp in db.assignment_statement) { yield AssignmentStatementDO { element_oid : tmp.element_oid, value_oid : tmp.value_oid, targets_size : tmp.targets_size } - } + } } /** * @brief gets the value oid of this element. @@ -282,11 +282,11 @@ impl AsyncForStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AsyncForStatementDO { - for (tmp in db.async_for_statement) { + for (tmp in db.async_for_statement) { yield AsyncForStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -300,12 +300,12 @@ impl AsyncFunctionDefStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AsyncFunctionDefStatementDO { - for (tmp in db.async_function_def_statement) { + for (tmp in db.async_function_def_statement) { yield AsyncFunctionDefStatementDO { element_oid : tmp.element_oid, name : tmp.name } - } + } } /** * @brief gets the name of this element. @@ -325,11 +325,11 @@ impl AsyncWithStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AsyncWithStatementDO { - for (tmp in db.async_with_statement) { + for (tmp in db.async_with_statement) { yield AsyncWithStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -344,13 +344,13 @@ impl AttributeExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AttributeExpressionDO { - for (tmp in db.attribute_expression) { + for (tmp in db.attribute_expression) { yield AttributeExpressionDO { element_oid : tmp.element_oid, value_oid : tmp.value_oid, ctx_type : tmp.ctx_type } - } + } } /** * @brief gets the value oid of this element. @@ -380,14 +380,14 @@ impl AugmentedAssignmentStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AugmentedAssignmentStatementDO { - for (tmp in db.augmented_assignment_statement) { + for (tmp in db.augmented_assignment_statement) { yield AugmentedAssignmentStatementDO { element_oid : tmp.element_oid, op_code : tmp.op_code, target_expr_oid : tmp.target_expr_oid, value_expr_oid : tmp.value_expr_oid } - } + } } /** * @brief gets the op code of this element. @@ -422,12 +422,12 @@ impl AwaitExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *AwaitExpressionDO { - for (tmp in db.await_expression) { + for (tmp in db.await_expression) { yield AwaitExpressionDO { element_oid : tmp.element_oid, expr_value_oid : tmp.expr_value_oid } - } + } } /** * @brief gets the expr value oid of this element. @@ -450,14 +450,14 @@ impl BinOpExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *BinOpExpressionDO { - for (tmp in db.bin_op_expression) { + for (tmp in db.bin_op_expression) { yield BinOpExpressionDO { element_oid : tmp.element_oid, left_expr_oid : tmp.left_expr_oid, opcode : tmp.opcode, right_expr_oid : tmp.right_expr_oid } - } + } } /** * @brief gets the left expr oid of this element. @@ -493,13 +493,13 @@ impl BooleanOpExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *BooleanOpExpressionDO { - for (tmp in db.boolean_op_expression) { + for (tmp in db.boolean_op_expression) { yield BooleanOpExpressionDO { element_oid : tmp.element_oid, type : tmp.type, size : tmp.size } - } + } } /** * @brief gets the type of this element. @@ -526,11 +526,11 @@ impl BreakStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *BreakStatementDO { - for (tmp in db.break_statement) { + for (tmp in db.break_statement) { yield BreakStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -544,12 +544,12 @@ impl CallExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *CallExpressionDO { - for (tmp in db.call_expression) { + for (tmp in db.call_expression) { yield CallExpressionDO { element_oid : tmp.element_oid, expr_func_oid : tmp.expr_func_oid } - } + } } /** * @brief gets the expr func oid of this element. @@ -570,12 +570,12 @@ impl CallableBindingDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *CallableBindingDO { - for (tmp in db.callable_binding) { + for (tmp in db.callable_binding) { yield CallableBindingDO { caller_oid : tmp.caller_oid, callee_oid : tmp.callee_oid } - } + } } /** * @brief gets the callee oid of this element. @@ -596,12 +596,12 @@ impl ClassDefStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ClassDefStatementDO { - for (tmp in db.class_def_statement) { + for (tmp in db.class_def_statement) { yield ClassDefStatementDO { element_oid : tmp.element_oid, name : tmp.name } - } + } } /** * @brief gets the name of this element. @@ -622,12 +622,12 @@ impl ClassHierarchyDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ClassHierarchyDO { - for (tmp in db.class_hierarchy) { + for (tmp in db.class_hierarchy) { yield ClassHierarchyDO { base_oid : tmp.base_oid, class_oid : tmp.class_oid } - } + } } /** * @brief gets the class oid of this element. @@ -650,14 +650,14 @@ impl CmpopDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *CmpopDO { - for (tmp in db.cmpop) { + for (tmp in db.cmpop) { yield CmpopDO { element_oid : tmp.element_oid, value : tmp.value, location_oid : tmp.location_oid, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the value of this element. @@ -694,14 +694,14 @@ impl CommentDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *CommentDO { - for (tmp in db.comment) { + for (tmp in db.comment) { yield CommentDO { element_oid : tmp.element_oid, text : tmp.text, parent_oid : tmp.parent_oid, location_oid : tmp.location_oid } - } + } } /** * @brief gets the text of this element. @@ -736,12 +736,12 @@ impl CompareExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *CompareExpressionDO { - for (tmp in db.compare_expression) { + for (tmp in db.compare_expression) { yield CompareExpressionDO { element_oid : tmp.element_oid, left_expr_oid : tmp.left_expr_oid } - } + } } /** * @brief gets the left expr oid of this element. @@ -766,7 +766,7 @@ impl ComprehensionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ComprehensionDO { - for (tmp in db.comprehension) { + for (tmp in db.comprehension) { yield ComprehensionDO { element_oid : tmp.element_oid, target_expr_oid : tmp.target_expr_oid, @@ -775,7 +775,7 @@ impl ComprehensionDO { parent_oid : tmp.parent_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the target expr oid of this element. @@ -824,12 +824,12 @@ impl ConstantDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ConstantDO { - for (tmp in db.constant) { + for (tmp in db.constant) { yield ConstantDO { element_oid : tmp.element_oid, value : tmp.value } - } + } } /** * @brief gets the value of this element. @@ -850,12 +850,12 @@ impl ContainerParentDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ContainerParentDO { - for (tmp in db.container_parent) { + for (tmp in db.container_parent) { yield ContainerParentDO { child_oid : tmp.child_oid, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the parent oid of this element. @@ -875,11 +875,11 @@ impl ContinueStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ContinueStatementDO { - for (tmp in db.continue_statement) { + for (tmp in db.continue_statement) { yield ContinueStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -893,12 +893,12 @@ impl DecoratedRelationDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DecoratedRelationDO { - for (tmp in db.decorated_relation) { + for (tmp in db.decorated_relation) { yield DecoratedRelationDO { decorator_oid : tmp.decorator_oid, decorated_element_oid : tmp.decorated_element_oid } - } + } } /** * @brief gets the decorated element oid of this element. @@ -920,13 +920,13 @@ impl DecoratorDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DecoratorDO { - for (tmp in db.decorator) { + for (tmp in db.decorator) { yield DecoratorDO { element_oid : tmp.element_oid, type : tmp.type, printable_text : tmp.printable_text } - } + } } /** * @brief gets the type of this element. @@ -954,12 +954,12 @@ impl DeleteStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DeleteStatementDO { - for (tmp in db.delete_statement) { + for (tmp in db.delete_statement) { yield DeleteStatementDO { element_oid : tmp.element_oid, targets_size : tmp.targets_size } - } + } } /** * @brief gets the targets size of this element. @@ -980,12 +980,12 @@ impl DictCompExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DictCompExpressionDO { - for (tmp in db.dict_comp_expression) { + for (tmp in db.dict_comp_expression) { yield DictCompExpressionDO { element_oid : tmp.element_oid, comprehension_size : tmp.comprehension_size } - } + } } /** * @brief gets the comprehension size of this element. @@ -1006,12 +1006,12 @@ impl DictExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DictExpressionDO { - for (tmp in db.dict_expression) { + for (tmp in db.dict_expression) { yield DictExpressionDO { element_oid : tmp.element_oid, size : tmp.size } - } + } } /** * @brief gets the size of this element. @@ -1033,13 +1033,13 @@ impl DocstringCommentDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *DocstringCommentDO { - for (tmp in db.docstring_comment) { + for (tmp in db.docstring_comment) { yield DocstringCommentDO { element_oid : tmp.element_oid, text : tmp.text, documented_element_oid : tmp.documented_element_oid } - } + } } /** * @brief gets the text of this element. @@ -1069,14 +1069,14 @@ impl ElementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ElementDO { - for (tmp in db.element) { + for (tmp in db.element) { yield ElementDO { oid : tmp.oid, value : tmp.value, type : tmp.type, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the value of this element. @@ -1114,7 +1114,7 @@ impl ExceptHandlerDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ExceptHandlerDO { - for (tmp in db.except_handler) { + for (tmp in db.except_handler) { yield ExceptHandlerDO { element_oid : tmp.element_oid, element_index : tmp.element_index, @@ -1122,7 +1122,7 @@ impl ExceptHandlerDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the element index of this element. @@ -1165,13 +1165,13 @@ impl ExprContextDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ExprContextDO { - for (tmp in db.expr_context) { + for (tmp in db.expr_context) { yield ExprContextDO { element_oid : tmp.element_oid, parent_oid : tmp.parent_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the parent oid of this element. @@ -1203,7 +1203,7 @@ impl ExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ExpressionDO { - for (tmp in db.expression) { + for (tmp in db.expression) { yield ExpressionDO { element_oid : tmp.element_oid, type : tmp.type, @@ -1212,7 +1212,7 @@ impl ExpressionDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the type of this element. @@ -1261,12 +1261,12 @@ impl ExpressionStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ExpressionStatementDO { - for (tmp in db.expression_statement) { + for (tmp in db.expression_statement) { yield ExpressionStatementDO { element_oid : tmp.element_oid, value_oid : tmp.value_oid } - } + } } /** * @brief gets the value oid of this element. @@ -1290,7 +1290,7 @@ impl FileDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FileDO { - for (tmp in db.file) { + for (tmp in db.file) { yield FileDO { element_oid : tmp.element_oid, relative_path : tmp.relative_path, @@ -1298,7 +1298,7 @@ impl FileDO { name : tmp.name, number_of_lines_oid : tmp.number_of_lines_oid } - } + } } /** * @brief gets the relative path of this element. @@ -1340,12 +1340,12 @@ impl Modified2To3FileDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *Modified2To3FileDO { - for (tmp in db.modified_2to3_file) { + for (tmp in db.modified_2to3_file) { yield Modified2To3FileDO { element_oid : tmp.element_oid, relative_path : tmp.relative_path } - } + } } /** * @brief gets the relative path of this element. @@ -1368,14 +1368,14 @@ impl ParseErrorFileDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ParseErrorFileDO { - for (tmp in db.parse_error_file) { + for (tmp in db.parse_error_file) { yield ParseErrorFileDO { element_oid : tmp.element_oid, relative_path : tmp.relative_path, error_message : tmp.error_message, error_text : tmp.error_text } - } + } } /** * @brief gets the relative path of this element. @@ -1410,12 +1410,12 @@ impl FileMd5SumDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FileMd5SumDO { - for (tmp in db.file_md5_sum) { + for (tmp in db.file_md5_sum) { yield FileMd5SumDO { file_oid : tmp.file_oid, value : tmp.value } - } + } } /** * @brief gets the value of this element. @@ -1436,12 +1436,12 @@ impl FileSha256SumDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FileSha256SumDO { - for (tmp in db.file_sha256_sum) { + for (tmp in db.file_sha256_sum) { yield FileSha256SumDO { file_oid : tmp.file_oid, value : tmp.value } - } + } } /** * @brief gets the value of this element. @@ -1464,14 +1464,14 @@ impl FolderDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FolderDO { - for (tmp in db.folder) { + for (tmp in db.folder) { yield FolderDO { element_oid : tmp.element_oid, qualified_name : tmp.qualified_name, name : tmp.name, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the qualified name of this element. @@ -1505,11 +1505,11 @@ impl ForStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ForStatementDO { - for (tmp in db.for_statement) { + for (tmp in db.for_statement) { yield ForStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -1523,12 +1523,12 @@ impl FormattedValueExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FormattedValueExpressionDO { - for (tmp in db.formatted_value_expression) { + for (tmp in db.formatted_value_expression) { yield FormattedValueExpressionDO { element_oid : tmp.element_oid, value_oid : tmp.value_oid } - } + } } /** * @brief gets the value oid of this element. @@ -1549,12 +1549,12 @@ impl FunctionDefStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *FunctionDefStatementDO { - for (tmp in db.function_def_statement) { + for (tmp in db.function_def_statement) { yield FunctionDefStatementDO { element_oid : tmp.element_oid, name : tmp.name } - } + } } /** * @brief gets the name of this element. @@ -1575,12 +1575,12 @@ impl GeneratorExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *GeneratorExpressionDO { - for (tmp in db.generator_expression) { + for (tmp in db.generator_expression) { yield GeneratorExpressionDO { element_oid : tmp.element_oid, elt_oid : tmp.elt_oid } - } + } } /** * @brief gets the elt oid of this element. @@ -1601,12 +1601,12 @@ impl GlobalStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *GlobalStatementDO { - for (tmp in db.global_statement) { + for (tmp in db.global_statement) { yield GlobalStatementDO { element_oid : tmp.element_oid, names : tmp.names } - } + } } /** * @brief gets the names of this element. @@ -1626,11 +1626,11 @@ impl IfExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *IfExpressionDO { - for (tmp in db.if_expression) { + for (tmp in db.if_expression) { yield IfExpressionDO { element_oid : tmp.element_oid } - } + } } } /** @@ -1643,11 +1643,11 @@ impl IfStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *IfStatementDO { - for (tmp in db.if_statement) { + for (tmp in db.if_statement) { yield IfStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -1662,13 +1662,13 @@ impl ImportFromStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ImportFromStatementDO { - for (tmp in db.import_from_statement) { + for (tmp in db.import_from_statement) { yield ImportFromStatementDO { element_oid : tmp.element_oid, module : tmp.module, level : tmp.level } - } + } } /** * @brief gets the module of this element. @@ -1695,11 +1695,11 @@ impl ImportStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ImportStatementDO { - for (tmp in db.import_statement) { + for (tmp in db.import_statement) { yield ImportStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -1713,12 +1713,12 @@ impl JoinedStrExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *JoinedStrExpressionDO { - for (tmp in db.joined_str_expression) { + for (tmp in db.joined_str_expression) { yield JoinedStrExpressionDO { element_oid : tmp.element_oid, size : tmp.size } - } + } } /** * @brief gets the size of this element. @@ -1744,7 +1744,7 @@ impl KeywordDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *KeywordDO { - for (tmp in db.keyword) { + for (tmp in db.keyword) { yield KeywordDO { element_oid : tmp.element_oid, arg_value : tmp.arg_value, @@ -1754,7 +1754,7 @@ impl KeywordDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the arg value of this element. @@ -1809,11 +1809,11 @@ impl LambdaExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *LambdaExpressionDO { - for (tmp in db.lambda_expression) { + for (tmp in db.lambda_expression) { yield LambdaExpressionDO { element_oid : tmp.element_oid } - } + } } } /** @@ -1828,13 +1828,13 @@ impl ListCompExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ListCompExpressionDO { - for (tmp in db.list_comp_expression) { + for (tmp in db.list_comp_expression) { yield ListCompExpressionDO { element_oid : tmp.element_oid, elt_oid : tmp.elt_oid, generator_size : tmp.generator_size } - } + } } /** * @brief gets the elt oid of this element. @@ -1863,13 +1863,13 @@ impl ListExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ListExpressionDO { - for (tmp in db.list_expression) { + for (tmp in db.list_expression) { yield ListExpressionDO { element_oid : tmp.element_oid, elt_size : tmp.elt_size, ctx : tmp.ctx } - } + } } /** * @brief gets the elt size of this element. @@ -1901,7 +1901,7 @@ impl LocationDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *LocationDO { - for (tmp in db.location) { + for (tmp in db.location) { yield LocationDO { element_oid : tmp.element_oid, file_oid : tmp.file_oid, @@ -1910,7 +1910,7 @@ impl LocationDO { end_line_number : tmp.end_line_number, end_column_number : tmp.end_column_number } - } + } } /** * @brief gets the file oid of this element. @@ -1964,7 +1964,7 @@ impl MatchCaseDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *MatchCaseDO { - for (tmp in db.match_case) { + for (tmp in db.match_case) { yield MatchCaseDO { element_oid : tmp.element_oid, pattern_oid : tmp.pattern_oid, @@ -1974,7 +1974,7 @@ impl MatchCaseDO { printable_text : tmp.printable_text, is_default : tmp.is_default } - } + } } /** * @brief gets the pattern oid of this element. @@ -2030,12 +2030,12 @@ impl MatchStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *MatchStatementDO { - for (tmp in db.match_statement) { + for (tmp in db.match_statement) { yield MatchStatementDO { element_oid : tmp.element_oid, subject_oid : tmp.subject_oid } - } + } } /** * @brief gets the subject oid of this element. @@ -2058,14 +2058,14 @@ impl MetainfoDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *MetainfoDO { - for (tmp in db.metainfo) { + for (tmp in db.metainfo) { yield MetainfoDO { oid : tmp.oid, kind : tmp.kind, value : tmp.value, program_oid : tmp.program_oid } - } + } } /** * @brief gets the kind of this element. @@ -2101,13 +2101,13 @@ impl ModDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ModDO { - for (tmp in db.mod) { + for (tmp in db.mod) { yield ModDO { element_oid : tmp.element_oid, type : tmp.type, location_oid : tmp.location_oid } - } + } } /** * @brief gets the type of this element. @@ -2137,14 +2137,14 @@ impl ModuleDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ModuleDO { - for (tmp in db.module) { + for (tmp in db.module) { yield ModuleDO { element_oid : tmp.element_oid, name : tmp.name, file_oid : tmp.file_oid, location_oid : tmp.location_oid } - } + } } /** * @brief gets the name of this element. @@ -2179,12 +2179,12 @@ impl ScopeEnclosingExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ScopeEnclosingExpressionDO { - for (tmp in db.scope_enclosing_expression) { + for (tmp in db.scope_enclosing_expression) { yield ScopeEnclosingExpressionDO { expression_oid : tmp.expression_oid, scope_oid : tmp.scope_oid } - } + } } /** * @brief gets the scope oid of this element. @@ -2205,12 +2205,12 @@ impl ScopeEnclosingStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ScopeEnclosingStatementDO { - for (tmp in db.scope_enclosing_statement) { + for (tmp in db.scope_enclosing_statement) { yield ScopeEnclosingStatementDO { statement_oid : tmp.statement_oid, scope_oid : tmp.scope_oid } - } + } } /** * @brief gets the scope oid of this element. @@ -2231,12 +2231,12 @@ impl NameExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *NameExpressionDO { - for (tmp in db.name_expression) { + for (tmp in db.name_expression) { yield NameExpressionDO { element_oid : tmp.element_oid, ctx_type : tmp.ctx_type } - } + } } /** * @brief gets the ctx type of this element. @@ -2258,13 +2258,13 @@ impl NamedExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *NamedExpressionDO { - for (tmp in db.named_expression) { + for (tmp in db.named_expression) { yield NamedExpressionDO { element_oid : tmp.element_oid, target_oid : tmp.target_oid, value_oid : tmp.value_oid } - } + } } /** * @brief gets the target oid of this element. @@ -2292,12 +2292,12 @@ impl NonLocalStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *NonLocalStatementDO { - for (tmp in db.non_local_statement) { + for (tmp in db.non_local_statement) { yield NonLocalStatementDO { element_oid : tmp.element_oid, names : tmp.names } - } + } } /** * @brief gets the names of this element. @@ -2320,14 +2320,14 @@ impl NumberOfLinesDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *NumberOfLinesDO { - for (tmp in db.number_of_lines) { + for (tmp in db.number_of_lines) { yield NumberOfLinesDO { element_oid : tmp.element_oid, number_of_total_lines : tmp.number_of_total_lines, number_of_valid_lines : tmp.number_of_valid_lines, number_of_comment_lines : tmp.number_of_comment_lines } - } + } } /** * @brief gets the number of total lines of this element. @@ -2364,14 +2364,14 @@ impl OperatorDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *OperatorDO { - for (tmp in db.operator) { + for (tmp in db.operator) { yield OperatorDO { element_oid : tmp.element_oid, location_oid : tmp.location_oid, parent_oid : tmp.parent_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the location oid of this element. @@ -2406,12 +2406,12 @@ impl ParentDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ParentDO { - for (tmp in db.parent) { + for (tmp in db.parent) { yield ParentDO { parent_oid : tmp.parent_oid, parent_type : tmp.parent_type } - } + } } /** * @brief gets the parent type of this element. @@ -2431,11 +2431,11 @@ impl PassStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *PassStatementDO { - for (tmp in db.pass_statement) { + for (tmp in db.pass_statement) { yield PassStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -2449,12 +2449,12 @@ impl ProgramDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ProgramDO { - for (tmp in db.program) { + for (tmp in db.program) { yield ProgramDO { program_oid : tmp.program_oid, absolute_prefix_path : tmp.absolute_prefix_path } - } + } } /** * @brief gets the absolute prefix path of this element. @@ -2474,11 +2474,11 @@ impl RaiseStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *RaiseStatementDO { - for (tmp in db.raise_statement) { + for (tmp in db.raise_statement) { yield RaiseStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -2492,12 +2492,12 @@ impl ReferenceRelationDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ReferenceRelationDO { - for (tmp in db.reference_relation) { + for (tmp in db.reference_relation) { yield ReferenceRelationDO { reference_element_oid : tmp.reference_element_oid, definition_element_oid : tmp.definition_element_oid } - } + } } /** * @brief gets the definition element oid of this element. @@ -2518,12 +2518,12 @@ impl ReturnStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *ReturnStatementDO { - for (tmp in db.return_statement) { + for (tmp in db.return_statement) { yield ReturnStatementDO { element_oid : tmp.element_oid, is_return_empty : tmp.is_return_empty } - } + } } /** * @brief gets the is return empty of this element. @@ -2545,13 +2545,13 @@ impl SetCompExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *SetCompExpressionDO { - for (tmp in db.set_comp_expression) { + for (tmp in db.set_comp_expression) { yield SetCompExpressionDO { element_oid : tmp.element_oid, elt_oid : tmp.elt_oid, generator_size : tmp.generator_size } - } + } } /** * @brief gets the elt oid of this element. @@ -2579,12 +2579,12 @@ impl SetExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *SetExpressionDO { - for (tmp in db.set_expression) { + for (tmp in db.set_expression) { yield SetExpressionDO { element_oid : tmp.element_oid, elt_size : tmp.elt_size } - } + } } /** * @brief gets the elt size of this element. @@ -2609,7 +2609,7 @@ impl SliceDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *SliceDO { - for (tmp in db.slice) { + for (tmp in db.slice) { yield SliceDO { element_oid : tmp.element_oid, element_index : tmp.element_index, @@ -2618,7 +2618,7 @@ impl SliceDO { printable_text : tmp.printable_text, has_step : tmp.has_step } - } + } } /** * @brief gets the element index of this element. @@ -2667,12 +2667,12 @@ impl StarredExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *StarredExpressionDO { - for (tmp in db.starred_expression) { + for (tmp in db.starred_expression) { yield StarredExpressionDO { element_oid : tmp.element_oid, ctx : tmp.ctx } - } + } } /** * @brief gets the ctx of this element. @@ -2697,7 +2697,7 @@ impl StatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *StatementDO { - for (tmp in db.statement) { + for (tmp in db.statement) { yield StatementDO { element_oid : tmp.element_oid, type : tmp.type, @@ -2706,7 +2706,7 @@ impl StatementDO { location_oid : tmp.location_oid, printable_text : tmp.printable_text } - } + } } /** * @brief gets the type of this element. @@ -2757,14 +2757,14 @@ impl SubscriptExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *SubscriptExpressionDO { - for (tmp in db.subscript_expression) { + for (tmp in db.subscript_expression) { yield SubscriptExpressionDO { element_oid : tmp.element_oid, value_oid : tmp.value_oid, slice_oid : tmp.slice_oid, ctx : tmp.ctx } - } + } } /** * @brief gets the value oid of this element. @@ -2801,14 +2801,14 @@ impl TokenDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *TokenDO { - for (tmp in db.token) { + for (tmp in db.token) { yield TokenDO { element_oid : tmp.element_oid, value : tmp.value, location_oid : tmp.location_oid, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the value of this element. @@ -2842,11 +2842,11 @@ impl TryStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *TryStatementDO { - for (tmp in db.try_statement) { + for (tmp in db.try_statement) { yield TryStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -2861,13 +2861,13 @@ impl TupleExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *TupleExpressionDO { - for (tmp in db.tuple_expression) { + for (tmp in db.tuple_expression) { yield TupleExpressionDO { element_oid : tmp.element_oid, elt_size : tmp.elt_size, ctx : tmp.ctx } - } + } } /** * @brief gets the elt size of this element. @@ -2897,14 +2897,14 @@ impl UnaryOpDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *UnaryOpDO { - for (tmp in db.unary_op) { + for (tmp in db.unary_op) { yield UnaryOpDO { element_oid : tmp.element_oid, type : tmp.type, location_oid : tmp.location_oid, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the type of this element. @@ -2940,13 +2940,13 @@ impl UnaryOpExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *UnaryOpExpressionDO { - for (tmp in db.unary_op_expression) { + for (tmp in db.unary_op_expression) { yield UnaryOpExpressionDO { element_oid : tmp.element_oid, op_code : tmp.op_code, operand_oid : tmp.operand_oid } - } + } } /** * @brief gets the op code of this element. @@ -2977,7 +2977,7 @@ impl VariableDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *VariableDO { - for (tmp in db.variable) { + for (tmp in db.variable) { yield VariableDO { element_oid : tmp.element_oid, parent_oid : tmp.parent_oid, @@ -2985,7 +2985,7 @@ impl VariableDO { printable_text : tmp.printable_text, name : tmp.name } - } + } } /** * @brief gets the parent oid of this element. @@ -3026,11 +3026,11 @@ impl WhileStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *WhileStatementDO { - for (tmp in db.while_statement) { + for (tmp in db.while_statement) { yield WhileStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -3046,14 +3046,14 @@ impl WithItemDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *WithItemDO { - for (tmp in db.with_item) { + for (tmp in db.with_item) { yield WithItemDO { element_oid : tmp.element_oid, printable_text : tmp.printable_text, element_index : tmp.element_index, parent_oid : tmp.parent_oid } - } + } } /** * @brief gets the printable text of this element. @@ -3087,11 +3087,11 @@ impl WithStatementDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *WithStatementDO { - for (tmp in db.with_statement) { + for (tmp in db.with_statement) { yield WithStatementDO { element_oid : tmp.element_oid } - } + } } } /** @@ -3104,11 +3104,11 @@ impl YieldExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *YieldExpressionDO { - for (tmp in db.yield_expression) { + for (tmp in db.yield_expression) { yield YieldExpressionDO { element_oid : tmp.element_oid } - } + } } } /** @@ -3122,12 +3122,12 @@ impl YieldFromExpressionDO { @data_constraint @inline pub fn __all__(db: PythonDB) -> *YieldFromExpressionDO { - for (tmp in db.yield_from_expression) { + for (tmp in db.yield_from_expression) { yield YieldFromExpressionDO { element_oid : tmp.element_oid, value : tmp.value } - } + } } /** * @brief gets the value of this element. diff --git a/language/python/lib/Decorator.gdl b/language/python/lib/Decorator.gdl index 629a361e..72ea36b3 100644 --- a/language/python/lib/Decorator.gdl +++ b/language/python/lib/Decorator.gdl @@ -7,7 +7,7 @@ schema Decorator extends Expression { impl Decorator { @data_constraint @inline - fn __all__(db: PythonDB) -> *Decorator { + pub fn __all__(db: PythonDB) -> *Decorator { for (tmp in Expression(db)) { for (d in DecoratorDO(db)) { if (tmp.key_eq(d)) { @@ -47,7 +47,7 @@ schema DecoratedRelation extends DecoratedRelationDO { impl DecoratedRelation { @data_constraint @inline - fn __all__(db: PythonDB) -> *DecoratedRelation { + pub fn __all__(db: PythonDB) -> *DecoratedRelation { for (tmp in DecoratedRelationDO(db)) { yield DecoratedRelation { decorator_oid : tmp.decorator_oid, diff --git a/language/python/lib/Documentation.gdl b/language/python/lib/Documentation.gdl index 00597e96..e58d3391 100644 --- a/language/python/lib/Documentation.gdl +++ b/language/python/lib/Documentation.gdl @@ -7,7 +7,7 @@ schema Comment extends CommentDO { impl Comment { @data_constraint @inline - fn __all__(db: PythonDB) -> *Comment { + pub fn __all__(db: PythonDB) -> *Comment { for (tmp in CommentDO(db)) { yield Comment { element_oid : tmp.element_oid, @@ -110,7 +110,7 @@ schema DocstringComment extends DocstringCommentDO { impl DocstringComment { @data_constraint @inline - fn __all__(db: PythonDB) -> *DocstringComment { + pub fn __all__(db: PythonDB) -> *DocstringComment { for (tmp in DocstringCommentDO(db)) { yield DocstringComment { element_oid : tmp.element_oid, diff --git a/language/python/lib/Element.gdl b/language/python/lib/Element.gdl index e27c90ea..e55eef25 100644 --- a/language/python/lib/Element.gdl +++ b/language/python/lib/Element.gdl @@ -7,7 +7,7 @@ schema CombineElement { impl CombineElement { @data_constraint @inline - fn __all__(db: PythonDB) -> *CombineElement { + pub fn __all__(db: PythonDB) -> *CombineElement { for (e in Element(db)) { yield CombineElement {id : e.oid} } @@ -525,7 +525,7 @@ schema Element extends ElementDO { impl Element { @data_constraint @inline - fn __all__(db: PythonDB) -> *Element { + pub fn __all__(db: PythonDB) -> *Element { for (tmp in ElementDO(db)) { yield Element { oid : tmp.oid, diff --git a/language/python/lib/Expression.gdl b/language/python/lib/Expression.gdl index bfeec16e..6a629700 100644 --- a/language/python/lib/Expression.gdl +++ b/language/python/lib/Expression.gdl @@ -7,7 +7,7 @@ schema Expression extends ExpressionDO { impl Expression { @data_constraint @inline - fn __all__(db: PythonDB) -> *Expression { + pub fn __all__(db: PythonDB) -> *Expression { for (tmp in ExpressionDO(db)) { yield Expression { element_oid : tmp.element_oid, @@ -87,7 +87,7 @@ schema IfExpression extends Expression { impl IfExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *IfExpression { + pub fn __all__(db: PythonDB) -> *IfExpression { for (tmp in Expression(db)) { for (e in IfExpressionDO(db)) { if (tmp.key_eq(e)) { @@ -113,7 +113,7 @@ schema BooleanExpression extends Expression { impl BooleanExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *BooleanExpression { + pub fn __all__(db: PythonDB) -> *BooleanExpression { for (tmp in Expression(db)) { for (e in BooleanOpExpressionDO(db)) { if (tmp.key_eq(e)) { @@ -161,7 +161,7 @@ schema AndLogicalExpression extends BooleanExpression { impl AndLogicalExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *AndLogicalExpression { + pub fn __all__(db: PythonDB) -> *AndLogicalExpression { for (tmp in BooleanExpression(db)) { if (tmp.getType() = "And") { yield AndLogicalExpression { @@ -185,7 +185,7 @@ schema OrLogicalExpression extends BooleanExpression { impl OrLogicalExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *OrLogicalExpression { + pub fn __all__(db: PythonDB) -> *OrLogicalExpression { for (tmp in BooleanExpression(db)) { if (tmp.getType() = "Or") { yield OrLogicalExpression { @@ -209,7 +209,7 @@ schema AttributeExpression extends Expression { impl AttributeExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *AttributeExpression { + pub fn __all__(db: PythonDB) -> *AttributeExpression { for (tmp in Expression(db)) { for (a in AttributeExpressionDO(db)) { if (tmp.key_eq(a)) { @@ -235,7 +235,7 @@ schema CallExpression extends Expression { impl CallExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *CallExpression { + pub fn __all__(db: PythonDB) -> *CallExpression { for (tmp in Expression(db)) { for (c in CallExpressionDO(db)) { if (tmp.key_eq(c)) { @@ -302,7 +302,7 @@ schema ListCompExpression extends Expression { impl ListCompExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *ListCompExpression { + pub fn __all__(db: PythonDB) -> *ListCompExpression { for (tmp in Expression(db)) { for (c in ListCompExpressionDO(db)) { if (tmp.key_eq(c)) { diff --git a/language/python/lib/Function.gdl b/language/python/lib/Function.gdl index e49c8da3..bb54408d 100644 --- a/language/python/lib/Function.gdl +++ b/language/python/lib/Function.gdl @@ -7,7 +7,7 @@ schema Function extends Statement { impl Function { @data_constraint @inline - fn __all__(db: PythonDB) -> *Function { + pub fn __all__(db: PythonDB) -> *Function { for (tmp in Statement(db)) { for (f in FunctionDefStatement(db)) { if (tmp.key_eq(f)) { @@ -130,7 +130,7 @@ schema InitFunction extends Function { impl InitFunction { @data_constraint @inline - fn __all__(db: PythonDB) -> *InitFunction { + pub fn __all__(db: PythonDB) -> *InitFunction { for (tmp in Function(db)) { if (tmp.getName() = "__init__") { yield InitFunction { diff --git a/language/python/lib/Keyword.gdl b/language/python/lib/Keyword.gdl index 5ff666d9..1750b383 100644 --- a/language/python/lib/Keyword.gdl +++ b/language/python/lib/Keyword.gdl @@ -7,7 +7,7 @@ schema Keyword extends KeywordDO { impl Keyword { @data_constraint @inline - fn __all__(db: PythonDB) -> *Keyword { + pub fn __all__(db: PythonDB) -> *Keyword { for (tmp in KeywordDO(db)) { yield Keyword { element_oid : tmp.element_oid, @@ -81,7 +81,7 @@ schema KeywordWithoutName extends Keyword { impl KeywordWithoutName { @data_constraint @inline - fn __all__(db: PythonDB) -> *KeywordWithoutName { + pub fn __all__(db: PythonDB) -> *KeywordWithoutName { for (tmp in Keyword(db)) { if (tmp.getArgName() = "None") { yield KeywordWithoutName { diff --git a/language/python/lib/Location.gdl b/language/python/lib/Location.gdl index 1f17a348..972df608 100644 --- a/language/python/lib/Location.gdl +++ b/language/python/lib/Location.gdl @@ -7,7 +7,7 @@ schema Location extends LocationDO { impl Location { @data_constraint @inline - fn __all__(db: PythonDB) -> *Location { + pub fn __all__(db: PythonDB) -> *Location { for (tmp in LocationDO(db)) { yield Location { element_oid : tmp.element_oid, @@ -40,7 +40,7 @@ schema NumberOfLines extends NumberOfLinesDO { impl NumberOfLines { @data_constraint @inline - fn __all__(db: PythonDB) -> *NumberOfLines { + pub fn __all__(db: PythonDB) -> *NumberOfLines { for (tmp in NumberOfLinesDO(db)) { yield NumberOfLines { element_oid : tmp.element_oid, diff --git a/language/python/lib/Metrics.gdl b/language/python/lib/Metrics.gdl index 617e7c97..227a926c 100644 --- a/language/python/lib/Metrics.gdl +++ b/language/python/lib/Metrics.gdl @@ -7,7 +7,7 @@ schema ScopeEnclosingExpression extends ScopeEnclosingExpressionDO { impl ScopeEnclosingExpression { @data_constraint @inline - fn __all__(db: PythonDB) -> *ScopeEnclosingExpression { + pub fn __all__(db: PythonDB) -> *ScopeEnclosingExpression { for (tmp in ScopeEnclosingExpressionDO(db)) { yield ScopeEnclosingExpression { expression_oid : tmp.expression_oid, @@ -83,7 +83,7 @@ schema ScopeEnclosignStatement extends ScopeEnclosingStatementDO { impl ScopeEnclosignStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ScopeEnclosignStatement { + pub fn __all__(db: PythonDB) -> *ScopeEnclosignStatement { for (tmp in ScopeEnclosingStatementDO(db)) { yield ScopeEnclosignStatement { statement_oid : tmp.statement_oid, @@ -159,7 +159,7 @@ schema MetricFunction extends Function { impl MetricFunction { @data_constraint @inline - fn __all__(db: PythonDB) -> *MetricFunction { + pub fn __all__(db: PythonDB) -> *MetricFunction { for (tmp in Function(db)) { yield MetricFunction { element_oid : tmp.element_oid, diff --git a/language/python/lib/Scope.gdl b/language/python/lib/Scope.gdl index 3a48405c..88883b16 100644 --- a/language/python/lib/Scope.gdl +++ b/language/python/lib/Scope.gdl @@ -9,7 +9,7 @@ schema Scope extends CombineElement { impl Scope { @data_constraint @inline - fn __all__(db: PythonDB) -> *Scope { + pub fn __all__(db: PythonDB) -> *Scope { for (tmp in CombineElement(db)) { for (m in Module(db)) { if (tmp.key_eq(m)) { diff --git a/language/python/lib/Slice.gdl b/language/python/lib/Slice.gdl index c2d0dc1e..52f6002f 100644 --- a/language/python/lib/Slice.gdl +++ b/language/python/lib/Slice.gdl @@ -7,7 +7,7 @@ schema Slice extends SliceDO { impl Slice { @data_constraint @inline - fn __all__(db: PythonDB) -> *Slice { + pub fn __all__(db: PythonDB) -> *Slice { for (tmp in SliceDO(db)) { yield Slice { element_oid : tmp.element_oid, diff --git a/language/python/lib/Statement.gdl b/language/python/lib/Statement.gdl index df78c987..a00bf6aa 100644 --- a/language/python/lib/Statement.gdl +++ b/language/python/lib/Statement.gdl @@ -7,7 +7,7 @@ schema Statement extends StatementDO { impl Statement { @data_constraint @inline - fn __all__(db: PythonDB) -> *Statement { + pub fn __all__(db: PythonDB) -> *Statement { for (tmp in StatementDO(db)) { yield Statement { element_oid : tmp.element_oid, @@ -109,7 +109,7 @@ schema FunctionDefStatement extends Statement { impl FunctionDefStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *FunctionDefStatement { + pub fn __all__(db: PythonDB) -> *FunctionDefStatement { for (tmp in Statement(db)) { for (f in FunctionDefStatementDO(db)) { if (tmp.key_eq(f)) { @@ -150,7 +150,7 @@ schema AsyncFunctionDefStatement extends Statement { impl AsyncFunctionDefStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *AsyncFunctionDefStatement { + pub fn __all__(db: PythonDB) -> *AsyncFunctionDefStatement { for (tmp in Statement(db)) { for (f in AsyncFunctionDefStatementDO(db)) { if (tmp.key_eq(f)) { @@ -191,7 +191,7 @@ schema ClassDefStatement extends Statement { impl ClassDefStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ClassDefStatement { + pub fn __all__(db: PythonDB) -> *ClassDefStatement { for (tmp in Statement(db)) { for (f in ClassDefStatementDO(db)) { if (tmp.key_eq(f)) { @@ -232,7 +232,7 @@ schema ForStatement extends Statement { impl ForStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ForStatement { + pub fn __all__(db: PythonDB) -> *ForStatement { for (tmp in Statement(db)) { for (f in ForStatementDO(db)) { if (tmp.key_eq(f)) { @@ -258,7 +258,7 @@ schema IfStatement extends Statement { impl IfStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *IfStatement { + pub fn __all__(db: PythonDB) -> *IfStatement { for (tmp in Statement(db)) { for (f in IfStatementDO(db)) { if (tmp.key_eq(f)) { @@ -284,7 +284,7 @@ schema WhileStatement extends Statement { impl WhileStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *WhileStatement { + pub fn __all__(db: PythonDB) -> *WhileStatement { for (tmp in Statement(db)) { for (f in WhileStatementDO(db)) { if (tmp.key_eq(f)) { @@ -310,7 +310,7 @@ schema TryStatement extends Statement { impl TryStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *TryStatement { + pub fn __all__(db: PythonDB) -> *TryStatement { for (tmp in Statement(db)) { for (f in TryStatementDO(db)) { if (tmp.key_eq(f)) { @@ -336,7 +336,7 @@ schema ExceptHandler extends ExceptHandlerDO { impl ExceptHandler { @data_constraint @inline - fn __all__(db: PythonDB) -> *ExceptHandler { + pub fn __all__(db: PythonDB) -> *ExceptHandler { for (tmp in ExceptHandlerDO(db)) { yield ExceptHandler { element_oid : tmp.element_oid, @@ -390,7 +390,7 @@ schema MatchStatement extends Statement { impl MatchStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *MatchStatement { + pub fn __all__(db: PythonDB) -> *MatchStatement { for (tmp in Statement(db)) { for (s in MatchStatementDO(db)) { if (tmp.key_eq(s)) { @@ -427,7 +427,7 @@ schema MatchCase extends MatchCaseDO { impl MatchCase { @data_constraint @inline - fn __all__(db: PythonDB) -> *MatchCase { + pub fn __all__(db: PythonDB) -> *MatchCase { for (tmp in MatchCaseDO(db)) { yield MatchCase { element_oid : tmp.element_oid, @@ -494,7 +494,7 @@ schema BreakStatement extends Statement { impl BreakStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *BreakStatement { + pub fn __all__(db: PythonDB) -> *BreakStatement { for (tmp in Statement(db)) { for (s in BreakStatementDO(db)) { if (tmp.key_eq(s)) { @@ -520,7 +520,7 @@ schema ReturnStatement extends Statement { impl ReturnStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ReturnStatement { + pub fn __all__(db: PythonDB) -> *ReturnStatement { for (tmp in Statement(db)) { for (s in ReturnStatementDO(db)) { if (tmp.key_eq(s)) { @@ -546,7 +546,7 @@ schema ImportStatement extends Statement { impl ImportStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ImportStatement { + pub fn __all__(db: PythonDB) -> *ImportStatement { for (tmp in Statement(db)) { for (i in ImportStatementDO(db)) { if (tmp.key_eq(i)) { @@ -583,7 +583,7 @@ schema ImportFromStatement extends Statement { impl ImportFromStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *ImportFromStatement { + pub fn __all__(db: PythonDB) -> *ImportFromStatement { for (tmp in Statement(db)) { for (i in ImportFromStatementDO(db)) { if (tmp.key_eq(i)) { @@ -624,7 +624,7 @@ schema WithStatement extends Statement { impl WithStatement { @data_constraint @inline - fn __all__(db: PythonDB) -> *WithStatement { + pub fn __all__(db: PythonDB) -> *WithStatement { for (tmp in Statement(db)) { for (w in WithStatementDO(db)) { if (tmp.key_eq(w)) { diff --git a/language/python/lib/Withitem.gdl b/language/python/lib/Withitem.gdl index 196a3b75..c489eac7 100644 --- a/language/python/lib/Withitem.gdl +++ b/language/python/lib/Withitem.gdl @@ -7,7 +7,7 @@ schema WithItem extends WithItemDO { impl WithItem { @data_constraint @inline - fn __all__(db: PythonDB) -> *WithItem { + pub fn __all__(db: PythonDB) -> *WithItem { for (tmp in WithItemDO(db)) { yield WithItem { element_oid : tmp.element_oid, diff --git a/language/xml/lib/DOClass.gdl b/language/xml/lib/DOClass.gdl index a9cd21ba..49b396be 100644 --- a/language/xml/lib/DOClass.gdl +++ b/language/xml/lib/DOClass.gdl @@ -11,8 +11,9 @@ schema XmlAttributeDO { } impl XmlAttributeDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlAttributeDO { - for (tmp in db.xml_attribute) { + @inline + pub fn __all__(db: XmlDB) -> *XmlAttributeDO { + for (tmp in db.xml_attribute) { yield XmlAttributeDO { id : tmp.id, element_id : tmp.element_id, @@ -21,7 +22,7 @@ impl XmlAttributeDO { index_order : tmp.index_order, location_id : tmp.location_id } - } + } } /** * @brief gets the element id of the attribute. @@ -72,8 +73,9 @@ schema XmlCharacterDO { } impl XmlCharacterDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlCharacterDO { - for (tmp in db.xml_character) { + @inline + pub fn __all__(db: XmlDB) -> *XmlCharacterDO { + for (tmp in db.xml_character) { yield XmlCharacterDO { id : tmp.id, text : tmp.text, @@ -82,7 +84,7 @@ impl XmlCharacterDO { is_cdata : tmp.is_cdata, location_id : tmp.location_id } - } + } } /** * @brief gets the text of the element. @@ -131,15 +133,16 @@ schema XmlCommentDO { } impl XmlCommentDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlCommentDO { - for (tmp in db.xml_comment) { + @inline + pub fn __all__(db: XmlDB) -> *XmlCommentDO { + for (tmp in db.xml_comment) { yield XmlCommentDO { id : tmp.id, text : tmp.text, parent_id : tmp.parent_id, location_id : tmp.location_id } - } + } } /** * @brief gets the text of the comment. @@ -175,8 +178,9 @@ schema XmlDtdDO { } impl XmlDtdDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlDtdDO { - for (tmp in db.xml_dtd) { + @inline + pub fn __all__(db: XmlDB) -> *XmlDtdDO { + for (tmp in db.xml_dtd) { yield XmlDtdDO { id : tmp.id, root : tmp.root, @@ -184,7 +188,7 @@ impl XmlDtdDO { system_id : tmp.system_id, location_id : tmp.location_id } - } + } } /** * @brief gets the root of the element. @@ -224,13 +228,14 @@ schema XmlEncodingDO { } impl XmlEncodingDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlEncodingDO { - for (tmp in db.xml_encoding) { + @inline + pub fn __all__(db: XmlDB) -> *XmlEncodingDO { + for (tmp in db.xml_encoding) { yield XmlEncodingDO { id : tmp.id, encoding : tmp.encoding } - } + } } /** * @brief gets the encoding information. @@ -251,15 +256,16 @@ schema XmlHasNamespaceDO { } impl XmlHasNamespaceDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlHasNamespaceDO { - for (tmp in db.xml_has_namespace) { + @inline + pub fn __all__(db: XmlDB) -> *XmlHasNamespaceDO { + for (tmp in db.xml_has_namespace) { yield XmlHasNamespaceDO { id : tmp.id, element_id : tmp.element_id, namespace_id : tmp.namespace_id, container_id : tmp.container_id } - } + } } /** * @brief gets the element id. @@ -294,15 +300,16 @@ schema XmlNamespaceDO { } impl XmlNamespaceDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlNamespaceDO { - for (tmp in db.xml_namespace) { + @inline + pub fn __all__(db: XmlDB) -> *XmlNamespaceDO { + for (tmp in db.xml_namespace) { yield XmlNamespaceDO { id : tmp.id, prefix_name : tmp.prefix_name, url : tmp.url, location_id : tmp.location_id } - } + } } /** * @brief gets the prefix name of the element. @@ -337,15 +344,16 @@ schema XmlElementPrefixDO { } impl XmlElementPrefixDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlElementPrefixDO { - for (tmp in db.xml_element_prefix) { + @inline + pub fn __all__(db: XmlDB) -> *XmlElementPrefixDO { + for (tmp in db.xml_element_prefix) { yield XmlElementPrefixDO { name : tmp.name, id : tmp.id, parent_id : tmp.parent_id, location_id : tmp.location_id } - } + } } /** * @brief gets the name of the element. @@ -380,15 +388,16 @@ schema XmlElementNameDO { } impl XmlElementNameDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlElementNameDO { - for (tmp in db.xml_element_name) { + @inline + pub fn __all__(db: XmlDB) -> *XmlElementNameDO { + for (tmp in db.xml_element_name) { yield XmlElementNameDO { name : tmp.name, id : tmp.id, parent_id : tmp.parent_id, location_id : tmp.location_id } - } + } } /** * @brief gets the name of the element. @@ -423,15 +432,16 @@ schema XmlElementDO { } impl XmlElementDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlElementDO { - for (tmp in db.xml_element) { + @inline + pub fn __all__(db: XmlDB) -> *XmlElementDO { + for (tmp in db.xml_element) { yield XmlElementDO { id : tmp.id, parent_id : tmp.parent_id, index_order : tmp.index_order, location_id : tmp.location_id } - } + } } /** * @brief gets the parent id of the element. @@ -465,14 +475,15 @@ schema XmlFileDO { } impl XmlFileDO { @data_constraint - fn __all__(db: XmlDB) -> *XmlFileDO { - for (tmp in db.xml_file) { + @inline + pub fn __all__(db: XmlDB) -> *XmlFileDO { + for (tmp in db.xml_file) { yield XmlFileDO { id : tmp.id, file_name : tmp.file_name, relative_path : tmp.relative_path } - } + } } /** * @brief gets the name of the file. @@ -502,8 +513,9 @@ schema LocationDO { } impl LocationDO { @data_constraint - fn __all__(db: XmlDB) -> *LocationDO { - for (tmp in db.xml_location) { + @inline + pub fn __all__(db: XmlDB) -> *LocationDO { + for (tmp in db.xml_location) { yield LocationDO { id : tmp.id, start_line_number : tmp.start_line_number, @@ -512,7 +524,7 @@ impl LocationDO { end_column_number : tmp.end_column_number, file_id : tmp.file_id } - } + } } /** * @brief gets the start line number of the location element. diff --git a/language/xml/lib/Element.gdl b/language/xml/lib/Element.gdl index 0c884503..f65b2cbb 100644 --- a/language/xml/lib/Element.gdl +++ b/language/xml/lib/Element.gdl @@ -7,7 +7,7 @@ schema XmlAttribute extends XmlAttributeDO { impl XmlAttribute { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlAttribute { + pub fn __all__(db: XmlDB) -> *XmlAttribute { for (tmp in XmlAttributeDO(db)) { yield XmlAttribute { id : tmp.id, @@ -51,7 +51,7 @@ schema XmlCharacter extends XmlCharacterDO { impl XmlCharacter { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlCharacter { + pub fn __all__(db: XmlDB) -> *XmlCharacter { for (tmp in XmlCharacterDO(db)) { yield XmlCharacter { id : tmp.id, @@ -95,7 +95,7 @@ schema XmlComment extends XmlCommentDO { impl XmlComment { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlComment { + pub fn __all__(db: XmlDB) -> *XmlComment { for (tmp in XmlCommentDO(db)) { yield XmlComment { id : tmp.id, @@ -126,7 +126,7 @@ schema XmlDtd extends XmlDtdDO { impl XmlDtd { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlDtd { + pub fn __all__(db: XmlDB) -> *XmlDtd { for (tmp in XmlDtdDO(db)) { yield XmlDtd { id : tmp.id, @@ -158,7 +158,7 @@ schema XmlEncoding extends XmlEncodingDO { impl XmlEncoding { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlEncoding { + pub fn __all__(db: XmlDB) -> *XmlEncoding { for (tmp in XmlEncodingDO(db)) { yield XmlEncoding { id : tmp.id, @@ -176,7 +176,7 @@ schema XmlHasNamespace extends XmlHasNamespaceDO { impl XmlHasNamespace { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlHasNamespace { + pub fn __all__(db: XmlDB) -> *XmlHasNamespace { for (tmp in XmlHasNamespaceDO(db)) { yield XmlHasNamespace { id : tmp.id, @@ -229,7 +229,7 @@ schema XmlNamespace extends XmlNamespaceDO { impl XmlNamespace { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlNamespace { + pub fn __all__(db: XmlDB) -> *XmlNamespace { for (tmp in XmlNamespaceDO(db)) { yield XmlNamespace { id : tmp.id, @@ -288,7 +288,7 @@ schema XmlElementPrefix extends XmlElementPrefixDO { impl XmlElementPrefix { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlElementPrefix { + pub fn __all__(db: XmlDB) -> *XmlElementPrefix { for (tmp in XmlElementPrefixDO(db)) { yield XmlElementPrefix { name : tmp.name, @@ -330,7 +330,7 @@ schema XmlElementName extends XmlElementNameDO { impl XmlElementName { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlElementName { + pub fn __all__(db: XmlDB) -> *XmlElementName { for (tmp in XmlElementNameDO(db)) { yield XmlElementName { name : tmp.name, @@ -372,7 +372,7 @@ schema XmlElement extends XmlElementDO { impl XmlElement { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlElement { + pub fn __all__(db: XmlDB) -> *XmlElement { for (tmp in XmlElementDO(db)) { yield XmlElement { id : tmp.id, @@ -526,7 +526,7 @@ schema XmlFile extends XmlFileDO { impl XmlFile { @data_constraint @inline - fn __all__(db: XmlDB) -> *XmlFile { + pub fn __all__(db: XmlDB) -> *XmlFile { for (tmp in XmlFileDO(db)) { yield XmlFile { id : tmp.id, @@ -545,7 +545,7 @@ schema Location extends LocationDO { impl Location { @data_constraint @inline - fn __all__(db: XmlDB) -> *Location { + pub fn __all__(db: XmlDB) -> *Location { for (tmp in LocationDO(db)) { yield Location { id : tmp.id, From 050e89648e8c400900792d9e49e367aff825a52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Thu, 21 Dec 2023 18:06:31 +0800 Subject: [PATCH 27/29] update coref api builder process in ci --- .github/workflows/pages.yml | 4 +++- doc/tools/build.py | 22 ++++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 404fc3f9..1bfd45ed 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -8,7 +8,7 @@ name: Deploy Jekyll site to Pages on: push: - branches: ["main", "doc-preview"] + branches: ["main", "doc-preview", "coref-api"] paths: - "doc/**" @@ -43,6 +43,8 @@ jobs: bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems working-directory: '${{ github.workspace }}/doc' + - name: Generate COREF API Documents + run: python3 tools/build.py - name: Setup Pages id: pages uses: actions/configure-pages@v3 diff --git a/doc/tools/build.py b/doc/tools/build.py index 5cfe9f65..9268aed9 100644 --- a/doc/tools/build.py +++ b/doc/tools/build.py @@ -1,15 +1,21 @@ import subprocess -import sys - -if len(sys.argv) != 2: - print("Usage: python this_file.py godel_script_executable_path") - exit(-1) - -godel_script_executable = sys.argv[1] +print("Download Sparrow CLI") +subprocess.run([ + "curl", + "-L", + "https://github.com/codefuse-ai/CodeFuse-Query/releases/download/2.0.2/sparrow-cli-2.0.2.linux.tar.gz", + "-o", + "sparrow-cli.tar.gz" +]) +subprocess.run([ + "tar", + "-xvzf", + "sparrow-cli-2.0.2.linux.tar.gz" +]) print("Copy ../assets into ./doc/assets") subprocess.run(["cp", "-r", "../assets", "./"]) print("Concat coref library from ../language into ./.coref-api-build") subprocess.run(["python3", "tools/generate_coref_library.py", "../language"]) print("Generate markdown documents into ./godel-api") -subprocess.run(["python3", "tools/generate_markdown.py", godel_script_executable]) \ No newline at end of file +subprocess.run(["python3", "tools/generate_markdown.py", "./sparrow-cli/godel-script/usr/bin/godel"]) \ No newline at end of file From dd37d8f89eabc038a624966a64dbbc840d007c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Thu, 21 Dec 2023 18:09:29 +0800 Subject: [PATCH 28/29] fix error in CI --- doc/tools/build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tools/build.py b/doc/tools/build.py index 9268aed9..d661ba8b 100644 --- a/doc/tools/build.py +++ b/doc/tools/build.py @@ -11,7 +11,7 @@ subprocess.run([ "tar", "-xvzf", - "sparrow-cli-2.0.2.linux.tar.gz" + "sparrow-cli.tar.gz" ]) print("Copy ../assets into ./doc/assets") subprocess.run(["cp", "-r", "../assets", "./"]) From 44ea5e51191fc92784337b6a989aa3c0573c3066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=95=E5=B1=B1?= Date: Fri, 22 Dec 2023 10:12:58 +0800 Subject: [PATCH 29/29] update yml --- .github/workflows/pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 1bfd45ed..a557a69b 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -8,7 +8,7 @@ name: Deploy Jekyll site to Pages on: push: - branches: ["main", "doc-preview", "coref-api"] + branches: ["main", "doc-preview"] paths: - "doc/**"