From 41047cbab077e4cc64d10958fd939b143253077f Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Thu, 11 May 2023 19:57:54 +0200 Subject: [PATCH 01/38] Add skeleton Ruby project --- .../publish-tree-sitter-stack-graphs-ruby.yml | 45 +++++++++ .../tree-sitter-stack-graphs-ruby/.gitignore | 3 + .../CHANGELOG.md | 6 ++ .../tree-sitter-stack-graphs-ruby/Cargo.toml | 38 +++++++ .../tree-sitter-stack-graphs-ruby/LICENSE | 0 .../tree-sitter-stack-graphs-ruby/README.md | 98 +++++++++++++++++++ .../tree-sitter-stack-graphs-ruby/rust/bin.rs | 32 ++++++ .../tree-sitter-stack-graphs-ruby/rust/lib.rs | 50 ++++++++++ .../rust/test.rs | 23 +++++ .../src/builtins.cfg | 1 + .../src/builtins.rb | 0 .../src/stack-graphs.tsg | 42 ++++++++ .../test/test.rb | 0 13 files changed, 338 insertions(+) create mode 100644 .github/workflows/publish-tree-sitter-stack-graphs-ruby.yml create mode 100644 languages/tree-sitter-stack-graphs-ruby/.gitignore create mode 100644 languages/tree-sitter-stack-graphs-ruby/CHANGELOG.md create mode 100644 languages/tree-sitter-stack-graphs-ruby/Cargo.toml create mode 100644 languages/tree-sitter-stack-graphs-ruby/LICENSE create mode 100644 languages/tree-sitter-stack-graphs-ruby/README.md create mode 100644 languages/tree-sitter-stack-graphs-ruby/rust/bin.rs create mode 100644 languages/tree-sitter-stack-graphs-ruby/rust/lib.rs create mode 100644 languages/tree-sitter-stack-graphs-ruby/rust/test.rs create mode 100644 languages/tree-sitter-stack-graphs-ruby/src/builtins.cfg create mode 100644 languages/tree-sitter-stack-graphs-ruby/src/builtins.rb create mode 100644 languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/test.rb diff --git a/.github/workflows/publish-tree-sitter-stack-graphs-ruby.yml b/.github/workflows/publish-tree-sitter-stack-graphs-ruby.yml new file mode 100644 index 000000000..c2d11571b --- /dev/null +++ b/.github/workflows/publish-tree-sitter-stack-graphs-ruby.yml @@ -0,0 +1,45 @@ +name: Publish tree-sitter-stack-graphs-ruby release + +on: + push: + tags: + - tree-sitter-stack-graphs-ruby-v* + +jobs: + publish-crate: + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 + CRATE_DIR: './languages/tree-sitter-stack-graphs-ruby' + steps: + - name: Install Rust environment + uses: hecrj/setup-rust-action@v1 + - name: Checkout repository + uses: actions/checkout@v3 + # TODO Verify the crate version matches the tag + - name: Test crate + run: cargo test --all-features + working-directory: ${{ env.CRATE_DIR }} + - name: Verify publish crate + run: cargo publish --dry-run + working-directory: ${{ env.CRATE_DIR }} + - name: Publish crate + run: cargo publish + working-directory: ${{ env.CRATE_DIR }} + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + create-release: + needs: publish-crate + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Create GitHub release + uses: ncipollo/release-action@v1 + with: + body: | + Find more info on all releases at https://crates.io/crates/tree-sitter-stack-graphs-ruby. + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/languages/tree-sitter-stack-graphs-ruby/.gitignore b/languages/tree-sitter-stack-graphs-ruby/.gitignore new file mode 100644 index 000000000..faf6459fb --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/.gitignore @@ -0,0 +1,3 @@ +*.html +/Cargo.lock +/target diff --git a/languages/tree-sitter-stack-graphs-ruby/CHANGELOG.md b/languages/tree-sitter-stack-graphs-ruby/CHANGELOG.md new file mode 100644 index 000000000..e75f8bab3 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog for tree-sitter-stack-graphs-ruby + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml new file mode 100644 index 000000000..305cee0ca --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "tree-sitter-stack-graphs-ruby" +version = "0.1.0" +description = "Stack graphs definition for Ruby using tree-sitter-ruby" +readme = "README.md" +keywords = ["tree-sitter", "stack-graphs", "ruby"] +authors = [ + "GitHub ", +] +license = "MIT OR Apache-2.0" +edition = "2018" + +[[bin]] +name = "tree-sitter-stack-graphs-ruby" +path = "rust/bin.rs" +required-features = ["cli"] + +[lib] +path = "rust/lib.rs" +test = false + +[[test]] +name = "test" +path = "rust/test.rs" +harness = false + +[features] +cli = ["anyhow", "clap", "tree-sitter-stack-graphs/cli"] + +[dependencies] +anyhow = { version = "1.0", optional = true } +clap = { version = "4", optional = true } +tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs" } +tree-sitter-ruby = "0.20.0" + +[dev-dependencies] +anyhow = "1.0" +tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs", features = ["cli"] } diff --git a/languages/tree-sitter-stack-graphs-ruby/LICENSE b/languages/tree-sitter-stack-graphs-ruby/LICENSE new file mode 100644 index 000000000..e69de29bb diff --git a/languages/tree-sitter-stack-graphs-ruby/README.md b/languages/tree-sitter-stack-graphs-ruby/README.md new file mode 100644 index 000000000..ea44d2c0c --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/README.md @@ -0,0 +1,98 @@ +# tree-sitter-stack-graphs definition for Ruby + +This project defines tree-sitter-stack-graphs rules for Ruby using the [tree-sitter-ruby][] grammar. + +[tree-sitter-ruby]: https://crates.io/crates/tree-sitter-ruby + +## Usage + +To use this library, add the following to your `Cargo.toml`: + +``` toml +[dependencies] +tree-sitter-stack-graphs-ruby = "0.0.1" +``` + +Check out our [documentation](https://docs.rs/tree-sitter-stack-graphs-ruby/*/) for more details on how to use this library. + +## Command-line Program + +The command-line program for `tree-sitter-stack-graphs-ruby` lets you do stack graph based analysis and lookup from the command line. + +Install the program using `cargo install` as follows: + +``` sh +$ cargo install --features cli tree-sitter-stack-graphs-ruby +$ tree-sitter-stack-graphs-ruby --help +``` + +## Development + +The project is written in Rust, and requires a recent version installed. Rust can be installed and updated using [rustup][]. + +[rustup]: https://rustup.rs/ + +The project is organized as follows: + +- The stack graph rules are defined in `src/stack-graphs.tsg`. +- Builtins sources and configuration are defined in `src/builtins.rb` and `builtins.cfg` respectively. +- Tests are put into the `test` directory. + +### Building and Running Tests + +Build the project by running: + +``` sh +$ cargo build +``` + +Run the tests as follows: + +``` sh +$ cargo test +``` + +The project consists of a library and a CLI. By default, running `cargo` only applies to the library. To run `cargo` commands on the CLI as well, add `--features cli` or `--all-features`. + +Run the CLI from source as follows: + +``` sh +$ cargo run --features cli -- ARGS +``` + +Sources are formatted using the standard Rust formatted, which is applied by running: + +``` sh +$ cargo fmt +``` + +### Writing TSG + +The stack graph rules are written in [tree-sitter-graph][]. Checkout the [examples][], +which contain self-contained TSG rules for specific language features. A VSCode +[extension][] is available that provides syntax highlighting for TSG files. + +[tree-sitter-graph]: https://github.com/tree-sitter/tree-sitter-graph +[examples]: https://github.com/github/stack-graphs/blob/main/tree-sitter-stack-graphs/examples/ +[extension]: https://marketplace.visualstudio.com/items?itemName=tree-sitter.tree-sitter-graph + +Parse and test a single file by executing the following commands: + +``` sh +$ cargo run --features cli -- parse FILES... +$ cargo run --features cli -- test TESTFILES... +``` + +Generate a visualization to debug failing tests by passing the `-V` flag: + +``` sh +$ cargo run --features cli -- test -V TESTFILES... +``` + +To generate the visualization regardless of test outcome, execute: + +``` sh +$ cargo run --features cli -- test -V --output-mode=always TESTFILES... +``` + +Go to https://crates.io/crates/tree-sitter-stack-graphs for links to examples and documentation. diff --git a/languages/tree-sitter-stack-graphs-ruby/rust/bin.rs b/languages/tree-sitter-stack-graphs-ruby/rust/bin.rs new file mode 100644 index 000000000..35a96acbb --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/rust/bin.rs @@ -0,0 +1,32 @@ +// -*- coding: utf-8 -*- +// ------------------------------------------------------------------------------------------------ +// Copyright © 2023, stack-graphs authors. +// Licensed under either of Apache License, Version 2.0, or MIT license, at your option. +// Please see the LICENSE-APACHE or LICENSE-MIT files in this distribution for license details. +// ------------------------------------------------------------------------------------------------ + +use anyhow::anyhow; +use clap::Parser; +use tree_sitter_stack_graphs::cli::database::default_user_database_path_for_crate; +use tree_sitter_stack_graphs::cli::provided_languages::Subcommands; +use tree_sitter_stack_graphs::NoCancellation; + +fn main() -> anyhow::Result<()> { + let lc = match tree_sitter_stack_graphs_ruby::try_language_configuration(&NoCancellation) { + Ok(lc) => lc, + Err(err) => { + eprintln!("{}", err.display_pretty()); + return Err(anyhow!("Language configuration error")); + } + }; + let cli = Cli::parse(); + let default_db_path = default_user_database_path_for_crate(env!("CARGO_PKG_NAME"))?; + cli.subcommand.run(default_db_path, vec![lc]) +} + +#[derive(Parser)] +#[clap(about, version)] +pub struct Cli { + #[clap(subcommand)] + subcommand: Subcommands, +} diff --git a/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs b/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs new file mode 100644 index 000000000..dc73b38a2 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs @@ -0,0 +1,50 @@ +// -*- coding: utf-8 -*- +// ------------------------------------------------------------------------------------------------ +// Copyright © 2023, stack-graphs authors. +// Licensed under either of Apache License, Version 2.0, or MIT license, at your option. +// Please see the LICENSE-APACHE or LICENSE-MIT files in this distribution for license details. +// ------------------------------------------------------------------------------------------------ + +use tree_sitter_stack_graphs::loader::FileAnalyzers; +use tree_sitter_stack_graphs::loader::LanguageConfiguration; +use tree_sitter_stack_graphs::loader::LoadError; +use tree_sitter_stack_graphs::CancellationFlag; + +/// The stack graphs tsg source for this language. +pub const STACK_GRAPHS_TSG_PATH: &str = "src/stack-graphs.tsg"; +/// The stack graphs tsg source for this language. +pub const STACK_GRAPHS_TSG_SOURCE: &str = include_str!("../src/stack-graphs.tsg"); + +/// The stack graphs builtins configuration for this language. +pub const STACK_GRAPHS_BUILTINS_CONFIG: &str = include_str!("../src/builtins.cfg"); +/// The stack graphs builtins path for this language +pub const STACK_GRAPHS_BUILTINS_PATH: &str = "src/builtins.rb"; +/// The stack graphs builtins source for this language. +pub const STACK_GRAPHS_BUILTINS_SOURCE: &str = include_str!("../src/builtins.rb"); + +/// The name of the file path global variable. +pub const FILE_PATH_VAR: &str = "FILE_PATH"; + +pub fn language_configuration(cancellation_flag: &dyn CancellationFlag) -> LanguageConfiguration { + try_language_configuration(cancellation_flag).unwrap_or_else(|err| panic!("{}", err)) +} + +pub fn try_language_configuration( + cancellation_flag: &dyn CancellationFlag, +) -> Result { + LanguageConfiguration::from_sources( + tree_sitter_ruby::language(), + Some(String::from("source.rb")), + None, + vec![String::from("rb")], + STACK_GRAPHS_TSG_PATH.into(), + STACK_GRAPHS_TSG_SOURCE, + Some(( + STACK_GRAPHS_BUILTINS_PATH.into(), + STACK_GRAPHS_BUILTINS_SOURCE, + )), + Some(STACK_GRAPHS_BUILTINS_CONFIG), + FileAnalyzers::new(), + cancellation_flag, + ) +} diff --git a/languages/tree-sitter-stack-graphs-ruby/rust/test.rs b/languages/tree-sitter-stack-graphs-ruby/rust/test.rs new file mode 100644 index 000000000..1b3109cc0 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/rust/test.rs @@ -0,0 +1,23 @@ +// -*- coding: utf-8 -*- +// ------------------------------------------------------------------------------------------------ +// Copyright © 2023, stack-graphs authors. +// Licensed under either of Apache License, Version 2.0, or MIT license, at your option. +// Please see the LICENSE-APACHE or LICENSE-MIT files in this distribution for license details. +// ------------------------------------------------------------------------------------------------ + +use anyhow::anyhow; +use std::path::PathBuf; +use tree_sitter_stack_graphs::ci::Tester; +use tree_sitter_stack_graphs::NoCancellation; + +fn main() -> anyhow::Result<()> { + let lc = match tree_sitter_stack_graphs_ruby::try_language_configuration(&NoCancellation) { + Ok(lc) => lc, + Err(err) => { + eprintln!("{}", err.display_pretty()); + return Err(anyhow!("Language configuration error")); + } + }; + let test_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("test"); + Tester::new(vec![lc], vec![test_path]).run() +} diff --git a/languages/tree-sitter-stack-graphs-ruby/src/builtins.cfg b/languages/tree-sitter-stack-graphs-ruby/src/builtins.cfg new file mode 100644 index 000000000..d685061be --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/src/builtins.cfg @@ -0,0 +1 @@ +[globals] diff --git a/languages/tree-sitter-stack-graphs-ruby/src/builtins.rb b/languages/tree-sitter-stack-graphs-ruby/src/builtins.rb new file mode 100644 index 000000000..e69de29bb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg new file mode 100644 index 000000000..f95610e0c --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -0,0 +1,42 @@ +;; -*- coding: utf-8 -*- +;; ------------------------------------------------------------------------------------------------ +;; Copyright © 2023, stack-graphs authors. +;; Licensed under either of Apache License, Version 2.0, or MIT license, at your option. +;; Please see the LICENSE-APACHE or LICENSE-MIT files in this distribution for license details. +;; ------------------------------------------------------------------------------------------------ + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Stack graphs definition for Ruby +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Global Variables +;; ^^^^^^^^^^^^^^^^ + +global FILE_PATH +global ROOT_NODE +global JUMP_TO_SCOPE_NODE + +;; Attribute Shorthands +;; ^^^^^^^^^^^^^^^^^^^^ + +attribute node_definition = node => type = "pop_symbol", node_symbol = node, is_definition +attribute node_reference = node => type = "push_symbol", node_symbol = node, is_reference +attribute pop_node = node => type = "pop_symbol", node_symbol = node +attribute pop_scoped_node = node => type = "pop_scoped_symbol", node_symbol = node +attribute pop_scoped_symbol = symbol => type = "pop_scoped_symbol", symbol = symbol +attribute pop_symbol = symbol => type = "pop_symbol", symbol = symbol +attribute push_node = node => type = "push_symbol", node_symbol = node +attribute push_scoped_node = node => type = "push_scoped_symbol", node_symbol = node +attribute push_scoped_symbol = symbol => type = "push_scoped_symbol", symbol = symbol +attribute push_symbol = symbol => type = "push_symbol", symbol = symbol +attribute scoped_node_definition = node => type = "pop_scoped_symbol", node_symbol = node, is_definition +attribute scoped_node_reference = node => type = "push_scoped_symbol", node_symbol = node, is_reference +attribute symbol_definition = symbol => type = "pop_symbol", symbol = symbol, is_definition +attribute symbol_reference = symbol => type = "push_symbol", symbol = symbol, is_reference + +attribute node_symbol = node => symbol = (source-text node), source_node = node + +;; Stack Graph Rules +;; ^^^^^^^^^^^^^^^^^ + +; Have fun! diff --git a/languages/tree-sitter-stack-graphs-ruby/test/test.rb b/languages/tree-sitter-stack-graphs-ruby/test/test.rb new file mode 100644 index 000000000..e69de29bb From 9731142362fee8ac024649d73d0d21641795dff6 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Thu, 11 May 2023 16:43:55 -0700 Subject: [PATCH 02/38] Add storage and visualization features as required features --- languages/tree-sitter-stack-graphs-ruby/Cargo.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml index 305cee0ca..e24558e65 100644 --- a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml +++ b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml @@ -13,7 +13,7 @@ edition = "2018" [[bin]] name = "tree-sitter-stack-graphs-ruby" path = "rust/bin.rs" -required-features = ["cli"] +required-features = ["cli", "storage", "visualization"] [lib] path = "rust/lib.rs" @@ -26,10 +26,15 @@ harness = false [features] cli = ["anyhow", "clap", "tree-sitter-stack-graphs/cli"] +storage = ["rusqlite", "serde"] +visualization = ["serde", "serde_json"] [dependencies] anyhow = { version = "1.0", optional = true } clap = { version = "4", optional = true } +rusqlite = { version = "0.28", optional=true, features = ["bundled", "functions"] } +serde = { version="1.0", optional=true, features = ["derive"] } +serde_json = { version="1.0", optional=true } tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs" } tree-sitter-ruby = "0.20.0" From ae49472533479cabcfdf827d7af61d755792afcc Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Thu, 11 May 2023 16:47:15 -0700 Subject: [PATCH 03/38] Add a literal and statement test --- .../test/literals/array.rb | 10 ++++++++++ .../test/statements/assignments.rb | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb b/languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb new file mode 100644 index 000000000..ceeb49b03 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb @@ -0,0 +1,10 @@ +a = [1, + 2, + 3] +b = a[0] +c = a[1] + + b +# ^ defined: 4, 1 + c +# ^ defined: 5, 1, 2 diff --git a/languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb b/languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb new file mode 100644 index 000000000..67b4d35e9 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb @@ -0,0 +1,9 @@ +a = 1 + a +# ^ defined: 1 + +b = (a = 2) + b +# ^ defined: 5 + a +# ^ defined: 1, 5 From 4ad6b0ae743cee6e20cce64cb9beea93c6e66c77 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Thu, 11 May 2023 17:24:12 -0700 Subject: [PATCH 04/38] Scaffold module / class include test --- .../test/includes/modules.rb | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb new file mode 100644 index 000000000..fb996d2bf --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb @@ -0,0 +1,63 @@ +/*--- path: a_module.rb ---*/ +module A + CONST = 1 + def a; end +end + +/*--- path: b_module.rb ---*/ +$LOAD_PATH << '.' +require 'a_module' + +module B + include A + # ^ defined: 1 + + def b; end +end + +include B + # ^ defined: 4 + a +# ^ defined: 3 + + CONST +# ^ defined: 2 + +C = Module.new do + def c; end + def b; end +end + +self.extend(C) + # ^ defined: 19 + +self.c + # ^ defined: 20 + +/*--- path: d_class.rb ---*/ +$LOAD_PATH << '.' +require 'b_module' + +class D + include C + # ^ defined: 19 + + def calling_a + puts "calling a: #{a}" + # ^ defined: 3 + end + + def calling_c + puts "calling c: #{c}" + # ^ defined: 20 + end +end + +d = D.new + # ^ defined: 4 +d.c +# ^ defined: 5, 20 +d.calling_c +# ^ defined: 13 +d.b +# ^ defined: 4, 21 From 7fc44fab2cd0f0f1fe8c8e1f59df9480808b157c Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Thu, 11 May 2023 17:24:26 -0700 Subject: [PATCH 05/38] Use working example.rb file --- .../tree-sitter-stack-graphs-ruby/example.rb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 languages/tree-sitter-stack-graphs-ruby/example.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/example.rb b/languages/tree-sitter-stack-graphs-ruby/example.rb new file mode 100644 index 000000000..de1c4868c --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/example.rb @@ -0,0 +1,36 @@ +module A + CONST = 1 + def a; end +end + +module B + include A + + def b; end +end + +include B + +C = Module.new do + def c; end + def b + puts "c" + end +end + +self.extend(C) + +class D + include C + + def calling_a + puts "calling a: #{a}" + end + + def calling_c + puts "calling c: #{c}" + end +end + +d = D.new +d.b # => "c" From a97f2e9601bfe65f3fd22327fff78c2bf1a3df9c Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Fri, 12 May 2023 08:10:15 +0200 Subject: [PATCH 06/38] Revert "Add storage and visualization features as required features" This reverts commit b922492cbaea28d93a95d416e25619c37220b602. --- languages/tree-sitter-stack-graphs-ruby/Cargo.toml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml index e24558e65..305cee0ca 100644 --- a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml +++ b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml @@ -13,7 +13,7 @@ edition = "2018" [[bin]] name = "tree-sitter-stack-graphs-ruby" path = "rust/bin.rs" -required-features = ["cli", "storage", "visualization"] +required-features = ["cli"] [lib] path = "rust/lib.rs" @@ -26,15 +26,10 @@ harness = false [features] cli = ["anyhow", "clap", "tree-sitter-stack-graphs/cli"] -storage = ["rusqlite", "serde"] -visualization = ["serde", "serde_json"] [dependencies] anyhow = { version = "1.0", optional = true } clap = { version = "4", optional = true } -rusqlite = { version = "0.28", optional=true, features = ["bundled", "functions"] } -serde = { version="1.0", optional=true, features = ["derive"] } -serde_json = { version="1.0", optional=true } tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs" } tree-sitter-ruby = "0.20.0" From 95934bb6193f5d65d25b51872a210f6e4ad19e55 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Fri, 12 May 2023 13:51:11 +0200 Subject: [PATCH 07/38] Remove empty LICENSE file --- languages/tree-sitter-stack-graphs-ruby/LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 languages/tree-sitter-stack-graphs-ruby/LICENSE diff --git a/languages/tree-sitter-stack-graphs-ruby/LICENSE b/languages/tree-sitter-stack-graphs-ruby/LICENSE deleted file mode 100644 index e69de29bb..000000000 From afd5f1a965e3ca699f80b0a8be2234f1e73a01a0 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Fri, 12 May 2023 13:58:52 +0200 Subject: [PATCH 08/38] Require clap derive explicitly --- languages/tree-sitter-stack-graphs-ruby/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml index 305cee0ca..f2e9b0808 100644 --- a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml +++ b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml @@ -29,7 +29,7 @@ cli = ["anyhow", "clap", "tree-sitter-stack-graphs/cli"] [dependencies] anyhow = { version = "1.0", optional = true } -clap = { version = "4", optional = true } +clap = { version = "4", optional = true, features = ["derive"] } tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs" } tree-sitter-ruby = "0.20.0" From 86366c9804e33016e2340cae93e7eeb590ffb2c0 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Fri, 12 May 2023 14:39:38 +0200 Subject: [PATCH 09/38] Use Ruby comment syntax --- .../tree-sitter-stack-graphs-ruby/test/includes/modules.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb index fb996d2bf..18d01a45f 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb @@ -1,10 +1,10 @@ -/*--- path: a_module.rb ---*/ +# --- path: a_module.rb --- module A CONST = 1 def a; end end -/*--- path: b_module.rb ---*/ +# --- path: b_module.rb --- $LOAD_PATH << '.' require 'a_module' @@ -34,7 +34,7 @@ def b; end self.c # ^ defined: 20 -/*--- path: d_class.rb ---*/ +# --- path: d_class.rb --- $LOAD_PATH << '.' require 'b_module' From 24a61c7aa6ffa48b844ae4a80e1bb8dd7278e851 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Fri, 12 May 2023 07:01:33 -0700 Subject: [PATCH 10/38] Make includes module test more interesting --- .../test/includes/modules.rb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb index 18d01a45f..30c5e1ca5 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb @@ -39,15 +39,27 @@ def b; end require 'b_module' class D - include C - # ^ defined: 19 + include B + # ^ defined: 4 + extend C + # ^ defined: 19 def calling_a puts "calling a: #{a}" # ^ defined: 3 end - def calling_c + def calling_b + puts "calling b: #{b}" + # ^ defined: 8 + end + + def self.calling_b + puts "calling self.b: #{b}" + # ^ defined: 21 + end + + def self.calling_c puts "calling c: #{c}" # ^ defined: 20 end From 9c7065ece1f78544c5e5a5715925a7916ff8b04a Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 15 May 2023 17:08:06 +0200 Subject: [PATCH 11/38] Fist class def test --- .../src/stack-graphs.tsg | 56 ++++++++++++++++++- .../test/classes/class-definition.rb | 5 ++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index f95610e0c..4a245df80 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -39,4 +39,58 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; Stack Graph Rules ;; ^^^^^^^^^^^^^^^^^ -; Have fun! +;; Program + +(program)@prog { + node @prog.defs + node @prog.lexical_scope + + edge @prog.lexical_scope -> @prog.defs +} + +(program (_)@stmt)@prog { + edge @stmt.lexical_scope -> @prog.lexical_scope + + edge @prog.defs -> @stmt.defs +} + +;; Statements + +[ + (class) + (uninterpreted) +]@stmt { + node @stmt.defs + node @stmt.lexical_scope +} + +(class name:(_)@name)@class { + node def + attr (def) node_definition = @name + edge @class.defs -> def +} + +;; Expression + +[ + (constant) +]@expr { + node @expr.lexical_scope + node @expr.type + + ; FIXME expressions can appear in statement positions + node @expr.defs +} + +(_expression/constant)@constant { + node ref + attr (ref) node_reference = @constant + edge ref -> @constant.lexical_scope +} + +;; Comments + +(comment)@comment { + node @comment.defs + node @comment.lexical_scope +} diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition.rb new file mode 100644 index 000000000..d3fdb976d --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition.rb @@ -0,0 +1,5 @@ +class A +end + + A +# ^ defined: 1 From 9d0dead85bcb3d3967546a3faaadbbadd974cc50 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 15 May 2023 17:09:54 +0200 Subject: [PATCH 12/38] Skip unsupported tests --- .../test/includes/{modules.rb => modules.rb.skip} | 0 .../test/literals/{array.rb => array.rb.skip} | 0 .../test/statements/{assignments.rb => assignments.rb.skip} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename languages/tree-sitter-stack-graphs-ruby/test/includes/{modules.rb => modules.rb.skip} (100%) rename languages/tree-sitter-stack-graphs-ruby/test/literals/{array.rb => array.rb.skip} (100%) rename languages/tree-sitter-stack-graphs-ruby/test/statements/{assignments.rb => assignments.rb.skip} (100%) diff --git a/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb b/languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb.skip similarity index 100% rename from languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb rename to languages/tree-sitter-stack-graphs-ruby/test/includes/modules.rb.skip diff --git a/languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb b/languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb.skip similarity index 100% rename from languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb rename to languages/tree-sitter-stack-graphs-ruby/test/literals/array.rb.skip diff --git a/languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb b/languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb.skip similarity index 100% rename from languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb rename to languages/tree-sitter-stack-graphs-ruby/test/statements/assignments.rb.skip From e5ff5786c92c11d6c9872f18949989d13b95be90 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 15 May 2023 18:10:25 +0200 Subject: [PATCH 13/38] Support class variables --- .../src/stack-graphs.tsg | 58 +++++++++++++++++-- .../test/classes/class-variable.rb | 10 ++++ 2 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 4a245df80..ec517121c 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -46,6 +46,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @prog.lexical_scope edge @prog.lexical_scope -> @prog.defs + + ; FIXME add definition "<::>" } (program (_)@stmt)@prog { @@ -65,21 +67,45 @@ attribute node_symbol = node => symbol = (source-text node), source_n } (class name:(_)@name)@class { - node def - attr (def) node_definition = @name - edge @class.defs -> def + node @class.def + attr (@class.def) node_definition = @name + edge @class.defs -> @class.def +} + +(class body:(_)@body)@class { + edge @class.def -> @body.defs +} + +(body_statement)@body { + node @body.defs + node @body.lexical_scope +} + +(body_statement (_)@stmt)@body { + edge @stmt.lexical_scope -> @body.lexical_scope + + edge @body.defs -> @stmt.defs } ;; Expression [ - (constant) + (_primary/constant) + (assignment) + (integer) + (scope_resolution) ]@expr { + node @expr.defs node @expr.lexical_scope node @expr.type +} - ; FIXME expressions can appear in statement positions - node @expr.defs +[ + (assignment left:(constant)@name) +]@expr { + node def + attr (def) node_definition = @name + edge @expr.defs -> def } (_expression/constant)@constant { @@ -88,6 +114,26 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge ref -> @constant.lexical_scope } +(_expression/scope_resolution !scope name:(_))@_scope_res { + ; FIXME resolve via "<::>" +} + +(_expression/scope_resolution scope:(constant)@name)@scope_res { + node ref + attr (ref) node_reference = @name + edge ref -> @scope_res.lexical_scope + + edge @name.type -> ref +} + +(_expression/scope_resolution scope:(_)@scope name:(_)@name)@scope_res { + node ref + attr (ref) node_reference = @name + edge ref -> @scope.type + + edge @scope_res.type -> ref +} + ;; Comments (comment)@comment { diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb new file mode 100644 index 000000000..ae52d75fa --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb @@ -0,0 +1,10 @@ +class A + FOO = 42 +end + +class FOO +end + + A::FOO +# ^ defined: 1 +# ^ defined: 2 From 213f5a59f1d1250eccef88abc1d94b3e7189493b Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Tue, 16 May 2023 16:47:54 +0200 Subject: [PATCH 14/38] Add nested class test --- .../tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg | 8 +++++--- .../test/classes/nested-class.rb | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/nested-class.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index ec517121c..dec1e9692 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -114,11 +114,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge ref -> @constant.lexical_scope } -(_expression/scope_resolution !scope name:(_))@_scope_res { +(_primary/scope_resolution !scope name:(_))@_scope_res { ; FIXME resolve via "<::>" } -(_expression/scope_resolution scope:(constant)@name)@scope_res { +(_primary/scope_resolution scope:(constant)@name)@scope_res { node ref attr (ref) node_reference = @name edge ref -> @scope_res.lexical_scope @@ -126,7 +126,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.type -> ref } -(_expression/scope_resolution scope:(_)@scope name:(_)@name)@scope_res { +(_primary/scope_resolution scope:(_)@scope name:(_)@name)@scope_res { + edge @scope.lexical_scope -> @scope_res.lexical_scope + node ref attr (ref) node_reference = @name edge ref -> @scope.type diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/nested-class.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/nested-class.rb new file mode 100644 index 000000000..c6802127d --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/nested-class.rb @@ -0,0 +1,10 @@ +class A + class B + FOO = 42 + end +end + + A::B::FOO +# ^ defined: 1 +# ^ defined: 2 +# ^ defined: 3 From 93c00bbbb5fba4bb83b4a2e5d456dc28849c3446 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Tue, 16 May 2023 09:59:52 -0700 Subject: [PATCH 15/38] Add edge from program lexical scope to the root node --- languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg | 1 + 1 file changed, 1 insertion(+) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index dec1e9692..d866c57bf 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -46,6 +46,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @prog.lexical_scope edge @prog.lexical_scope -> @prog.defs + edge @prog.lexical_scope -> ROOT_NODE ; FIXME add definition "<::>" } From e4eb5975feacaa657b7f5400eaa184e7140248e5 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Tue, 16 May 2023 10:00:15 -0700 Subject: [PATCH 16/38] Differentiate between class definitions using scoped names versus singular constants --- .../src/stack-graphs.tsg | 11 ++++++++++- .../test/classes/class-definition-scope.rb | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index d866c57bf..d750a4330 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -67,12 +67,21 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @stmt.lexical_scope } -(class name:(_)@name)@class { +(class name:(constant)@name)@class { node @class.def attr (@class.def) node_definition = @name edge @class.defs -> @class.def } +(class name:(scope_resolution scope:(_)@scope name:(_)@name))@class { + node @scope.def + attr (@scope.def) node_definition = @scope + node @class.def + attr (@class.def) node_definition = @name + edge @class.defs -> @scope.def + edge @scope.def -> @class.def +} + (class body:(_)@body)@class { edge @class.def -> @body.defs } diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb new file mode 100644 index 000000000..96b734556 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb @@ -0,0 +1,9 @@ +class Foo +end + +class Foo::A +end + + Foo::A +# ^ defined: 1,4 + # ^ defined: 4 From 738541f14e0363056e0cd4b27b43be50a13bd152 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Tue, 16 May 2023 16:42:05 -0700 Subject: [PATCH 17/38] Add support for resolving ::Foo scoped constants A program's lexical scope has an edge to the ROOT NODE, and an edge is added from the ROOT NODE to a newly added pop symbol node "<::>" representing the "root scope". The root scope node has an edge to the program's defs. I considered an edge from the root scope to the program's lexical scope, but that causes the resulting complete path to cycle, and it also allows the root scope node access it doesn't strictly require (at least so far), whereas the root scope node only for now needs access to the program's definitions. This produces a shorter path. --- .../src/stack-graphs.tsg | 16 ++++++++++++---- .../test/classes/class-definition-scope.rb | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index d750a4330..aa76d2259 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -44,11 +44,13 @@ attribute node_symbol = node => symbol = (source-text node), source_n (program)@prog { node @prog.defs node @prog.lexical_scope + node @prog.root_scope + attr (@prog.root_scope) pop_symbol = "<::>" edge @prog.lexical_scope -> @prog.defs edge @prog.lexical_scope -> ROOT_NODE - - ; FIXME add definition "<::>" + edge ROOT_NODE -> @prog.root_scope + edge @prog.root_scope -> @prog.defs } (program (_)@stmt)@prog { @@ -124,8 +126,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge ref -> @constant.lexical_scope } -(_primary/scope_resolution !scope name:(_))@_scope_res { - ; FIXME resolve via "<::>" +(_primary/scope_resolution !scope name:(_)@name)@scope_res { + node scope + attr (scope) push_symbol = "<::>" + edge scope -> @scope_res.lexical_scope + + node ref + attr (ref) node_reference = @name + edge ref -> scope } (_primary/scope_resolution scope:(constant)@name)@scope_res { diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb index 96b734556..ffeb0578e 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb @@ -7,3 +7,6 @@ class Foo::A Foo::A # ^ defined: 1,4 # ^ defined: 4 + + ::Foo + # ^ defined: 1, 4 From 29ce3c8f2ca9815d0f8e7f07470c1e33b9f21d18 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 11:31:28 +0200 Subject: [PATCH 18/38] Add convenience scripts for development --- languages/tree-sitter-stack-graphs-ruby/contrib/match | 5 +++++ languages/tree-sitter-stack-graphs-ruby/contrib/parse | 5 +++++ languages/tree-sitter-stack-graphs-ruby/contrib/test | 5 +++++ 3 files changed, 15 insertions(+) create mode 100755 languages/tree-sitter-stack-graphs-ruby/contrib/match create mode 100755 languages/tree-sitter-stack-graphs-ruby/contrib/parse create mode 100755 languages/tree-sitter-stack-graphs-ruby/contrib/test diff --git a/languages/tree-sitter-stack-graphs-ruby/contrib/match b/languages/tree-sitter-stack-graphs-ruby/contrib/match new file mode 100755 index 000000000..1774cc440 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/contrib/match @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eu + +cargo run --features cli -- match "$@" diff --git a/languages/tree-sitter-stack-graphs-ruby/contrib/parse b/languages/tree-sitter-stack-graphs-ruby/contrib/parse new file mode 100755 index 000000000..f7fffd677 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/contrib/parse @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eu + +cargo run --features cli -- parse "$@" diff --git a/languages/tree-sitter-stack-graphs-ruby/contrib/test b/languages/tree-sitter-stack-graphs-ruby/contrib/test new file mode 100755 index 000000000..23a72d8ad --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/contrib/test @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eu + +cargo run --features cli -- test -V --output-mode always "$@" From 6f759470548d7b7b35e1242c632917e3504bab8f Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 11:42:46 +0200 Subject: [PATCH 19/38] Reorganize program to global scope connectivity The scoping that is visible in Ruby sources, as determined by the nesting of classes and modules, is independent of the source file organization. Therefore, we expose all top-level definitions in the global scope directly. A program's lexical scope inherits the global scope, thus having access to all available definitions in the repository. Additionally, the global scope is accessible via the <::> marker, which is used to ensure a name of the form ::NAME is resolved from the root and not from an intermediate definition that happens to be in scope. Later we may consider introducing a notion of a project to isolate groups of files from each other. This would be modeled as definitions and references between the global and the program scope. --- .../src/stack-graphs.tsg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index aa76d2259..e43b1a579 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -44,13 +44,19 @@ attribute node_symbol = node => symbol = (source-text node), source_n (program)@prog { node @prog.defs node @prog.lexical_scope - node @prog.root_scope - attr (@prog.root_scope) pop_symbol = "<::>" - edge @prog.lexical_scope -> @prog.defs + ;; program lexical scope inherits global scope edge @prog.lexical_scope -> ROOT_NODE - edge ROOT_NODE -> @prog.root_scope - edge @prog.root_scope -> @prog.defs + + ;; program lexical scope inherits global scope via the root + ;; scope marker <::> + node root_scope + attr (root_scope) pop_symbol = "<::>" + edge root_scope -> ROOT_NODE + edge @prog.lexical_scope -> root_scope + + ;; top-level definitions are accessible from the global scope + edge ROOT_NODE -> @prog.defs } (program (_)@stmt)@prog { From 9e05d343000685680db1565279d938b79e4feeaf Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 11:58:36 +0200 Subject: [PATCH 20/38] A bit of header styling --- .../src/stack-graphs.tsg | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index e43b1a579..d393aaffc 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -36,10 +36,8 @@ attribute symbol_reference = symbol => type = "push_symbol", symbol = symbol attribute node_symbol = node => symbol = (source-text node), source_node = node -;; Stack Graph Rules -;; ^^^^^^^^^^^^^^^^^ - ;; Program +;; ^^^^^^^ (program)@prog { node @prog.defs @@ -60,12 +58,15 @@ attribute node_symbol = node => symbol = (source-text node), source_n } (program (_)@stmt)@prog { + ;; statements inherit program lexical scope edge @stmt.lexical_scope -> @prog.lexical_scope + ;; program inherits statement definitions edge @prog.defs -> @stmt.defs } ;; Statements +;; ^^^^^^^^^^ [ (class) @@ -105,7 +106,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @body.defs -> @stmt.defs } -;; Expression +;; Expressions +;; ^^^^^^^^^^^ [ (_primary/constant) @@ -161,6 +163,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n } ;; Comments +;; ^^^^^^^^ (comment)@comment { node @comment.defs From cc6cbf5673caab7caeb8f98a90e2988413a8e34c Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 13:57:19 +0200 Subject: [PATCH 21/38] Factor out identifiers into seperate rules Identifiers (`constant` and `scope_resolution`) can appear in both reference and definition positions. To distinguish between these cases, the rules would need to include the context, i.e., the surrounding term. This works poorly with the recursive nature of `scope_resolution`, which can only be expressed generally with top-level rules. Including context would require explicit unfolding of the recursion (up to a fixed depth). Instead of the unfolding, we introduce top-level rules which create both reference and definition nodes. The terms using these names can chose to use the definition or the reference, or both, if they wish. --- .../src/stack-graphs.tsg | 125 ++++++++++++------ 1 file changed, 85 insertions(+), 40 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index d393aaffc..f17252539 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -76,23 +76,16 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @stmt.lexical_scope } -(class name:(constant)@name)@class { - node @class.def - attr (@class.def) node_definition = @name - edge @class.defs -> @class.def +(class name:(_)@name)@class { + edge @class.defs -> @name.def } -(class name:(scope_resolution scope:(_)@scope name:(_)@name))@class { - node @scope.def - attr (@scope.def) node_definition = @scope - node @class.def - attr (@class.def) node_definition = @name - edge @class.defs -> @scope.def - edge @scope.def -> @class.def -} +(class name:(_)@name body:(_)@body)@class { + ;; body inherits class lexical scope + edge @body.lexical_scope -> @class.lexical_scope -(class body:(_)@body)@class { - edge @class.def -> @body.defs + ;; class body consists of body definitions + edge @name.body -> @body.defs } (body_statement)@body { @@ -101,8 +94,10 @@ attribute node_symbol = node => symbol = (source-text node), source_n } (body_statement (_)@stmt)@body { + ;; statements inherits body lexical scope edge @stmt.lexical_scope -> @body.lexical_scope + ;; body definitions consists of statement definitions edge @body.defs -> @stmt.defs } @@ -117,49 +112,99 @@ attribute node_symbol = node => symbol = (source-text node), source_n ]@expr { node @expr.defs node @expr.lexical_scope - node @expr.type } [ - (assignment left:(constant)@name) + (assignment left:(_)@name) ]@expr { - node def - attr (def) node_definition = @name - edge @expr.defs -> def + edge @expr.defs -> @name.def + } -(_expression/constant)@constant { - node ref - attr (ref) node_reference = @constant - edge ref -> @constant.lexical_scope +[ + (_primary/constant) + (_primary/scope_resolution) +]@name { + edge @name.ref -> @name.lexical_scope } -(_primary/scope_resolution !scope name:(_)@name)@scope_res { - node scope - attr (scope) push_symbol = "<::>" - edge scope -> @scope_res.lexical_scope +;; Identifiers +;; ^^^^^^^^^^^ +;; Identifiers are single or scoped names and can appear in reference +;; and definition positions. These rules create both reference and +;; definition nodes, and ensure both support arbirarily deep nesting. +;; +;; The nodes available to connect the refences are: +;; .ref The reference. This node should be connected to the +;; lexical scope where the definition should resolve. +;; .value The value the reference resolves to. References that +;; need to be resolved in this value should connect to +;; this node. +;; +;; The nodes available to connect the definitions are: +;; .def The definition. Scopes exposing the definition should +;; create an edge to this node. +;; .body The body of this definition. This node should be connected +;; to the definitions that are members of this definition. + +(constant)@constant { node ref - attr (ref) node_reference = @name - edge ref -> scope + attr (ref) node_reference = @constant + + node scope_sep + attr (scope_sep) push_symbol = "::" + + ; edge @constant.value -> ref + let @constant.value = ref + edge ref -> scope_sep + ; edge scope_sep -> @constant.ref + let @constant.ref = scope_sep } -(_primary/scope_resolution scope:(constant)@name)@scope_res { - node ref - attr (ref) node_reference = @name - edge ref -> @scope_res.lexical_scope +(constant)@constant { + node def + attr (def) node_definition = @constant + + node scope_sep + attr (scope_sep) pop_symbol = "::" - edge @name.type -> ref + ; edge @constant.def -> scope_sep + let @constant.def = scope_sep + edge scope_sep -> def + ; edge def -> @constant.body + let @constant.body = def } -(_primary/scope_resolution scope:(_)@scope name:(_)@name)@scope_res { - edge @scope.lexical_scope -> @scope_res.lexical_scope +(scope_resolution scope:(_)@scope name:(_)@name)@scope_res { + ; edge @scope_res.value -> @name.value + let @scope_res.value = @name.value + edge @name.ref -> @scope.value + ; edge @scope.ref -> @scope_res.ref + let @scope_res.ref = @scope.ref +} - node ref - attr (ref) node_reference = @name - edge ref -> @scope.type +(scope_resolution !scope name:(_)@name)@scope_res { + node root_scope + attr (root_scope) symbol_reference = "<::>" + + ; edge @scope_res.value -> @name.value + let @scope_res.value = @name.value + edge @name.ref -> root_scope + ; edge root_scope -> @scope_res.ref + let @scope_res.ref = root_scope +} + +(scope_resolution scope:(_)@scope name:(_)@name)@scope_res { + ; edge @scope_res.def -> @scope.def + let @scope_res.def = @scope.def + edge @scope.body -> @name.def + ; edge @name.body -> @scope_res.body + let @scope_res.body = @name.body +} - edge @scope_res.type -> ref +(scope_resolution !scope name:(_)) { + ;; FIXME can this occur in a definition position? } ;; Comments From e4639c5e4ddebe9a53cb2b4d3c79014c5b24ea92 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 14:18:38 +0200 Subject: [PATCH 22/38] Support root variable definitions Definitions in the root scope (with names starting with `::`) can appear inside nested classes and modules. To support this, the `.defs` property has been split into `.lexical_defs` and `.root_defs`. The former behaves the same as `.defs` did, containing the definitions that are part of the enclosing construct. The latter contains definitions that instead escape that context and bubble up to the root. --- .../src/stack-graphs.tsg | 116 +++++++++++------- .../root-variable-inside-nested-class.rb | 13 ++ 2 files changed, 84 insertions(+), 45 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/root-variable-inside-nested-class.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index f17252539..2bdc0073f 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -40,8 +40,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; ^^^^^^^ (program)@prog { - node @prog.defs + node @prog.lexical_defs node @prog.lexical_scope + node @prog.root_defs ;; program lexical scope inherits global scope edge @prog.lexical_scope -> ROOT_NODE @@ -54,7 +55,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @prog.lexical_scope -> root_scope ;; top-level definitions are accessible from the global scope - edge ROOT_NODE -> @prog.defs + edge ROOT_NODE -> @prog.lexical_defs + edge ROOT_NODE -> @prog.root_defs } (program (_)@stmt)@prog { @@ -62,7 +64,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @stmt.lexical_scope -> @prog.lexical_scope ;; program inherits statement definitions - edge @prog.defs -> @stmt.defs + edge @prog.lexical_defs -> @stmt.lexical_defs + edge @prog.root_defs -> @stmt.root_defs } ;; Statements @@ -72,12 +75,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n (class) (uninterpreted) ]@stmt { - node @stmt.defs + node @stmt.lexical_defs node @stmt.lexical_scope + node @stmt.root_defs } (class name:(_)@name)@class { - edge @class.defs -> @name.def + edge @class.lexical_defs -> @name.lexical_def + edge @class.root_defs -> @name.root_def } (class name:(_)@name body:(_)@body)@class { @@ -85,12 +90,16 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @body.lexical_scope -> @class.lexical_scope ;; class body consists of body definitions - edge @name.body -> @body.defs + edge @name.body -> @body.lexical_defs + + ;; root definitions are exposed upwards + edge @class.root_defs -> @body.root_defs } (body_statement)@body { - node @body.defs + node @body.lexical_defs node @body.lexical_scope + node @body.root_defs } (body_statement (_)@stmt)@body { @@ -98,7 +107,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @stmt.lexical_scope -> @body.lexical_scope ;; body definitions consists of statement definitions - edge @body.defs -> @stmt.defs + edge @body.lexical_defs -> @stmt.lexical_defs + edge @body.root_defs -> @stmt.root_defs } ;; Expressions @@ -106,18 +116,20 @@ attribute node_symbol = node => symbol = (source-text node), source_n [ (_primary/constant) + (_primary/scope_resolution) (assignment) (integer) - (scope_resolution) ]@expr { - node @expr.defs + node @expr.lexical_defs node @expr.lexical_scope + node @expr.root_defs } [ (assignment left:(_)@name) ]@expr { - edge @expr.defs -> @name.def + edge @expr.lexical_defs -> @name.lexical_def + edge @expr.root_defs -> @name.root_def } @@ -148,6 +160,20 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; .body The body of this definition. This node should be connected ;; to the definitions that are members of this definition. +[ + (constant) + (scope_resolution) +]@identifier { + node @identifier.body + node @identifier.lexical_def + node @identifier.ref + node @identifier.root_def + node @identifier.value +} + +;;;; References +;;;; `````````` + (constant)@constant { node ref attr (ref) node_reference = @constant @@ -155,62 +181,62 @@ attribute node_symbol = node => symbol = (source-text node), source_n node scope_sep attr (scope_sep) push_symbol = "::" - ; edge @constant.value -> ref - let @constant.value = ref + edge @constant.value -> ref edge ref -> scope_sep - ; edge scope_sep -> @constant.ref - let @constant.ref = scope_sep -} - -(constant)@constant { - node def - attr (def) node_definition = @constant - - node scope_sep - attr (scope_sep) pop_symbol = "::" - - ; edge @constant.def -> scope_sep - let @constant.def = scope_sep - edge scope_sep -> def - ; edge def -> @constant.body - let @constant.body = def + edge scope_sep -> @constant.ref } (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { - ; edge @scope_res.value -> @name.value - let @scope_res.value = @name.value + edge @scope_res.value -> @name.value edge @name.ref -> @scope.value - ; edge @scope.ref -> @scope_res.ref - let @scope_res.ref = @scope.ref + edge @scope.ref -> @scope_res.ref } (scope_resolution !scope name:(_)@name)@scope_res { node root_scope attr (root_scope) symbol_reference = "<::>" - ; edge @scope_res.value -> @name.value - let @scope_res.value = @name.value + edge @scope_res.value -> @name.value edge @name.ref -> root_scope - ; edge root_scope -> @scope_res.ref - let @scope_res.ref = root_scope + edge root_scope -> @scope_res.ref +} + +;;;; Definitions +;;;; ``````````` + +(constant)@constant { + node def + attr (def) node_definition = @constant + + node scope_sep + attr (scope_sep) pop_symbol = "::" + + edge @constant.lexical_def -> scope_sep + edge scope_sep -> def + edge def -> @constant.body } (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { - ; edge @scope_res.def -> @scope.def - let @scope_res.def = @scope.def - edge @scope.body -> @name.def - ; edge @name.body -> @scope_res.body - let @scope_res.body = @name.body + edge @scope_res.lexical_def -> @scope.lexical_def + edge @scope_res.root_def -> @scope.root_def + edge @scope.body -> @name.lexical_def + edge @name.body -> @scope_res.body } -(scope_resolution !scope name:(_)) { - ;; FIXME can this occur in a definition position? +(scope_resolution !scope name:(_)@name)@scope_res { + edge @scope_res.root_def -> @name.lexical_def + edge @name.body -> @scope_res.body } ;; Comments ;; ^^^^^^^^ (comment)@comment { - node @comment.defs + node @comment.body + node @comment.lexical_def + node @comment.lexical_defs node @comment.lexical_scope + node @comment.root_def + node @comment.root_defs + node @comment.value } diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/root-variable-inside-nested-class.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/root-variable-inside-nested-class.rb new file mode 100644 index 000000000..26934d604 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/root-variable-inside-nested-class.rb @@ -0,0 +1,13 @@ +class A + class B + ::FOO = 42 + end +end + +::FOO +# ^ defined: 3 + +::A::B::FOO +# ^ defined: 1 +# ^ defined: 2 +# ^ defined: From 3d4321c584fb4804434013a0f71f805bc756900c Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 14:43:56 +0200 Subject: [PATCH 23/38] Always use same output file --- languages/tree-sitter-stack-graphs-ruby/contrib/test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/contrib/test b/languages/tree-sitter-stack-graphs-ruby/contrib/test index 23a72d8ad..2cdadde9c 100755 --- a/languages/tree-sitter-stack-graphs-ruby/contrib/test +++ b/languages/tree-sitter-stack-graphs-ruby/contrib/test @@ -2,4 +2,4 @@ set -eu -cargo run --features cli -- test -V --output-mode always "$@" +cargo run --features cli -- test -V=test.html --output-mode always "$@" From 8bcf82198a3b65c4491fbaeb4864e16795a1a47e Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 14:45:13 +0200 Subject: [PATCH 24/38] Support visiblity between split class definitions Class variables are visible in the class body, even if the class definition is split. To support that, a class definition not only introduces a definition, but also imports a reference (for its own name) into the lexical scope of the body. --- .../src/stack-graphs.tsg | 16 +++++++++----- ...iable-defined-in-split-class-definition.rb | 16 ++++++++++++++ ...ined-in-split-definition-of-outer-class.rb | 19 +++++++++++++++++ .../classes/split-nested-class-definition.rb | 21 +++++++++++++++++++ 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-class-definition.rb create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-definition-of-outer-class.rb create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/split-nested-class-definition.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 2bdc0073f..51b828f75 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -81,14 +81,21 @@ attribute node_symbol = node => symbol = (source-text node), source_n } (class name:(_)@name)@class { + ;; expose the class definition edge @class.lexical_defs -> @name.lexical_def edge @class.root_defs -> @name.root_def + + ;; resolve the class in the lexical scope + edge @name.ref -> @class.lexical_scope } (class name:(_)@name body:(_)@body)@class { ;; body inherits class lexical scope edge @body.lexical_scope -> @class.lexical_scope + ;; body inherits other definitions of this class + edge @body.lexical_scope -> @name.value + ;; class body consists of body definitions edge @name.body -> @body.lexical_defs @@ -125,12 +132,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @expr.root_defs } -[ - (assignment left:(_)@name) -]@expr { - edge @expr.lexical_defs -> @name.lexical_def - edge @expr.root_defs -> @name.root_def +(assignment left:(_)@name right:(_)@value)@assign { + edge @assign.lexical_defs -> @name.lexical_def + edge @assign.root_defs -> @name.root_def + edge @value.lexical_scope -> @assign.lexical_scope } [ diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-class-definition.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-class-definition.rb new file mode 100644 index 000000000..b36ef401e --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-class-definition.rb @@ -0,0 +1,16 @@ +class A + FOO = 42 +end + +class A + BAR = FOO + # ^ defined: 2 +end + + A::FOO +# ^ defined: 1, 5 +# ^ defined: 2 + + A::BAR +# ^ defined: 1, 5 +# ^ defined: 6 diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-definition-of-outer-class.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-definition-of-outer-class.rb new file mode 100644 index 000000000..9d609a0a1 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-variable-defined-in-split-definition-of-outer-class.rb @@ -0,0 +1,19 @@ +class A + FOO = 42 +end + +class A + class B + BAR = FOO + # ^ defined: 2 + end +end + + A::FOO +# ^ defined: 1, 5 +# ^ defined: 2 + + A::B::BAR +# ^ defined: 1, 5 +# ^ defined: 6 +# ^ defined: 7 diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/split-nested-class-definition.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/split-nested-class-definition.rb new file mode 100644 index 000000000..b0e0187f0 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/split-nested-class-definition.rb @@ -0,0 +1,21 @@ +class A + class B + FOO = 42 + end +end + +class A + class B + BAR = 11 + end +end + + A::B::FOO +# ^ defined: 1, 7 +# ^ defined: 2, 8 +# ^ defined: 3 + + A::B::BAR +# ^ defined: 1, 7 +# ^ defined: 2, 8 +# ^ defined: 9 From 5affcd54b0527e8a43f666ce0f22308a7a4832a7 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 17 May 2023 14:57:15 +0200 Subject: [PATCH 25/38] Add module support Modules behave very similarly to classes. For now we treat them the same and share the logic for modules and classes. --- .../src/stack-graphs.tsg | 11 +++++++++-- .../test/modules/split-module-definition.rb | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/modules/split-module-definition.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 51b828f75..4d823a374 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -73,6 +73,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n [ (class) + (module) (uninterpreted) ]@stmt { node @stmt.lexical_defs @@ -80,7 +81,10 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @stmt.root_defs } -(class name:(_)@name)@class { +[ + (class name:(_)@name) + (module name:(_)@name) +]@class { ;; expose the class definition edge @class.lexical_defs -> @name.lexical_def edge @class.root_defs -> @name.root_def @@ -89,7 +93,10 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.ref -> @class.lexical_scope } -(class name:(_)@name body:(_)@body)@class { +[ + (class name:(_)@name body:(_)@body) + (module name:(_)@name body:(_)@body) +]@class { ;; body inherits class lexical scope edge @body.lexical_scope -> @class.lexical_scope diff --git a/languages/tree-sitter-stack-graphs-ruby/test/modules/split-module-definition.rb b/languages/tree-sitter-stack-graphs-ruby/test/modules/split-module-definition.rb new file mode 100644 index 000000000..e8eb11628 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/modules/split-module-definition.rb @@ -0,0 +1,16 @@ +module M + FOO = 42 +end + +module M + BAR = FOO + # ^ defined: 2 +end + + M::FOO +# ^ defined: 1, 5 +# ^ defined: 2 + + M::BAR +# ^ defined: 1, 5 +# ^ defined: 6 From fc63478a6baa158f20d99b1dbd4eadf03a9e2644 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Wed, 17 May 2023 09:25:51 -0700 Subject: [PATCH 26/38] Add push / pop node resolution for `new` method calls on class constants Co-authored-by: Hendrik van Antwerpen --- .../src/stack-graphs.tsg | 56 ++++++++++++++++--- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 4d823a374..90d5e2f86 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -93,6 +93,17 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.ref -> @class.lexical_scope } +(class name:(_)@name) { + node dot + attr (dot) pop_symbol = "." + + node def + attr (def) pop_symbol = "new" + + edge @name.body -> dot + edge dot -> def +} + [ (class name:(_)@name body:(_)@body) (module name:(_)@name body:(_)@body) @@ -132,13 +143,22 @@ attribute node_symbol = node => symbol = (source-text node), source_n (_primary/constant) (_primary/scope_resolution) (assignment) + (call) (integer) + (method) ]@expr { node @expr.lexical_defs node @expr.lexical_scope node @expr.root_defs } +[ + (_primary/constant) + (_primary/scope_resolution) +]@name { + edge @name.ref -> @name.lexical_scope +} + (assignment left:(_)@name right:(_)@value)@assign { edge @assign.lexical_defs -> @name.lexical_def edge @assign.root_defs -> @name.root_def @@ -146,11 +166,24 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @value.lexical_scope -> @assign.lexical_scope } -[ - (_primary/constant) - (_primary/scope_resolution) -]@name { - edge @name.ref -> @name.lexical_scope +(call receiver:(_)@recv_name method:(_)@mthd_name)@call { + node dot + attr (dot) push_symbol = "." + + edge @mthd_name.ref -> dot + edge dot -> @recv_name.value + edge @recv_name.ref -> @call.lexical_scope +} + +(method name:(_)@name)@method { + node dot + attr (dot) pop_symbol = "." + + node def + attr (def) node_definition = @name + + edge @method.lexical_defs -> dot + edge dot -> def } ;; Identifiers @@ -158,7 +191,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; Identifiers are single or scoped names and can appear in reference ;; and definition positions. These rules create both reference and -;; definition nodes, and ensure both support arbirarily deep nesting. +;; definition nodes, and ensure both support arbitrarily deep nesting. ;; ;; The nodes available to connect the refences are: ;; .ref The reference. This node should be connected to the @@ -171,10 +204,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; .def The definition. Scopes exposing the definition should ;; create an edge to this node. ;; .body The body of this definition. This node should be connected -;; to the definitions that are members of this definition. +;; to the definitions that are members of this definition. [ (constant) + (identifier) (scope_resolution) ]@identifier { node @identifier.body @@ -199,6 +233,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge scope_sep -> @constant.ref } +(identifier)@identifier { + node ref + attr (ref) node_reference = @identifier + + edge @identifier.value -> ref + edge ref -> @identifier.ref +} + (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { edge @scope_res.value -> @name.value edge @name.ref -> @scope.value From a68be21f9db4e2e1a7dcc8f4d288a43024d655fc Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Wed, 17 May 2023 10:10:21 -0700 Subject: [PATCH 27/38] Model class instantiation with `new` constructor method call Co-authored-by: Hendrik van Antwerpen --- .../src/stack-graphs.tsg | 14 ++++++++++---- .../test/classes/class_instantiation.rb | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 90d5e2f86..3728111b0 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -93,7 +93,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.ref -> @class.lexical_scope } -(class name:(_)@name) { +(class name:(_)@name body:(_)@body) { node dot attr (dot) pop_symbol = "." @@ -102,6 +102,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.body -> dot edge dot -> def + edge def -> @body.lexical_defs } [ @@ -146,17 +147,21 @@ attribute node_symbol = node => symbol = (source-text node), source_n (call) (integer) (method) + (singleton_method) ]@expr { node @expr.lexical_defs node @expr.lexical_scope node @expr.root_defs + node @expr.expr_value } [ (_primary/constant) + (_primary/identifier) (_primary/scope_resolution) ]@name { edge @name.ref -> @name.lexical_scope + edge @name.expr_value -> @name.value } (assignment left:(_)@name right:(_)@value)@assign { @@ -166,13 +171,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @value.lexical_scope -> @assign.lexical_scope } -(call receiver:(_)@recv_name method:(_)@mthd_name)@call { +(call receiver:(_)@recv method:(_)@mthd_name)@call { node dot attr (dot) push_symbol = "." + edge @call.expr_value -> @mthd_name.value edge @mthd_name.ref -> dot - edge dot -> @recv_name.value - edge @recv_name.ref -> @call.lexical_scope + edge dot -> @recv.expr_value + edge @recv.lexical_scope -> @call.lexical_scope } (method name:(_)@name)@method { diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb new file mode 100644 index 000000000..3a93497f4 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb @@ -0,0 +1,8 @@ +class Foo + def bar + end +end + + Foo.new.bar +# ^ defined: 1 + # ^ defined: 2 From 455e90c33adcc7e89d1385f13287bcec569bcc1c Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Fri, 19 May 2023 15:57:52 -0700 Subject: [PATCH 28/38] Introduce static_defs and instance_defs scoped variables. To distinguish between instance and static methods within class bodies, statements and expressions now by default have static_defs and instance_defs scoped variables. This allows the stanza for handling instance method declarations to only create an edge between the method node's instance_defs to its associated identifier node. This works in the same way for static method declarations, in which a static method's static_defs is connected via an edge to its identifier node. I think this will also allow instances of classes to create edges between the class instance value and the lhs of an assignment's instance_defs, but I have not progressed that far yet. --- .../src/stack-graphs.tsg | 31 ++++++++++++++++--- .../classes/refer-instance-static-methods.rb | 15 +++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 3728111b0..2c6cb7170 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -76,9 +76,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n (module) (uninterpreted) ]@stmt { + node @stmt.instance_defs node @stmt.lexical_defs node @stmt.lexical_scope node @stmt.root_defs + node @stmt.static_defs } [ @@ -93,16 +95,16 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.ref -> @class.lexical_scope } -(class name:(_)@name body:(_)@body) { +(class body:(_)@body) { node dot attr (dot) pop_symbol = "." node def attr (def) pop_symbol = "new" - edge @name.body -> dot + edge @body.static_defs -> dot edge dot -> def - edge def -> @body.lexical_defs + edge def -> @body.instance_defs } [ @@ -117,15 +119,18 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; class body consists of body definitions edge @name.body -> @body.lexical_defs + edge @body.lexical_defs -> @body.static_defs ;; root definitions are exposed upwards edge @class.root_defs -> @body.root_defs } (body_statement)@body { + node @body.instance_defs node @body.lexical_defs node @body.lexical_scope node @body.root_defs + node @body.static_defs } (body_statement (_)@stmt)@body { @@ -134,6 +139,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; body definitions consists of statement definitions edge @body.lexical_defs -> @stmt.lexical_defs + edge @body.instance_defs -> @stmt.instance_defs + edge @body.static_defs -> @stmt.static_defs edge @body.root_defs -> @stmt.root_defs } @@ -151,6 +158,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n ]@expr { node @expr.lexical_defs node @expr.lexical_scope + node @expr.instance_defs + node @expr.static_defs node @expr.root_defs node @expr.expr_value } @@ -188,10 +197,22 @@ attribute node_symbol = node => symbol = (source-text node), source_n node def attr (def) node_definition = @name - edge @method.lexical_defs -> dot + edge @method.instance_defs -> dot edge dot -> def } +(singleton_method name:(_)@name)@method { + node dot + attr (dot) pop_symbol = "." + + node def + attr (def) node_definition = @name + + edge @method.static_defs -> dot + edge dot -> def +} + + ;; Identifiers ;; ^^^^^^^^^^^ @@ -294,10 +315,12 @@ attribute node_symbol = node => symbol = (source-text node), source_n (comment)@comment { node @comment.body + node @comment.instance_defs node @comment.lexical_def node @comment.lexical_defs node @comment.lexical_scope node @comment.root_def node @comment.root_defs + node @comment.static_defs node @comment.value } diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb new file mode 100644 index 000000000..42294f8e5 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb @@ -0,0 +1,15 @@ +class Foo + def bar + end + + def self.bar + end +end + + Foo.new.bar +# ^ defined: 1 + # ^ defined: 2 + + Foo.bar +# ^ defined: 5 + From d9e7f5293a9de1bc7b77db42b0a6e612ffb183d4 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Fri, 19 May 2023 16:09:11 -0700 Subject: [PATCH 29/38] Update tests to use consistent commenting style and additional assertions --- .../test/classes/class-definition-scope.rb | 4 ++-- .../{class_instantiation.rb => class-instantiation.rb} | 2 +- .../test/classes/class-variable.rb | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) rename languages/tree-sitter-stack-graphs-ruby/test/classes/{class_instantiation.rb => class-instantiation.rb} (72%) diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb index ffeb0578e..76f3dee0f 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-definition-scope.rb @@ -6,7 +6,7 @@ class Foo::A Foo::A # ^ defined: 1,4 - # ^ defined: 4 +# ^ defined: 4 ::Foo - # ^ defined: 1, 4 +# ^ defined: 1, 4 diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-instantiation.rb similarity index 72% rename from languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb rename to languages/tree-sitter-stack-graphs-ruby/test/classes/class-instantiation.rb index 3a93497f4..53bc5e220 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/classes/class_instantiation.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-instantiation.rb @@ -5,4 +5,4 @@ def bar Foo.new.bar # ^ defined: 1 - # ^ defined: 2 +# ^ defined: 2 diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb index ae52d75fa..8aa08dd3b 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/class-variable.rb @@ -8,3 +8,6 @@ class FOO A::FOO # ^ defined: 1 # ^ defined: 2 + + FOO +# ^ defined: 5 From d180b1108fb84f5b62b49c12dea8fb3b8927250d Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 22 May 2023 09:18:28 +0200 Subject: [PATCH 30/38] Remove `.lexical_defs` With the new `.instance_defs` and `.static_defs`, the `.lexical_defs` has become obsolete, since it was only used for static and instance definitions. We will probably reintroduce it later to model proper lexical definitions (i.e., local variables). --- .../src/stack-graphs.tsg | 43 ++++++++----------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 2c6cb7170..5e0e9320a 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -40,9 +40,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; ^^^^^^^ (program)@prog { - node @prog.lexical_defs + node @prog.defs node @prog.lexical_scope - node @prog.root_defs ;; program lexical scope inherits global scope edge @prog.lexical_scope -> ROOT_NODE @@ -55,8 +54,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @prog.lexical_scope -> root_scope ;; top-level definitions are accessible from the global scope - edge ROOT_NODE -> @prog.lexical_defs - edge ROOT_NODE -> @prog.root_defs + edge ROOT_NODE -> @prog.defs } (program (_)@stmt)@prog { @@ -64,8 +62,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @stmt.lexical_scope -> @prog.lexical_scope ;; program inherits statement definitions - edge @prog.lexical_defs -> @stmt.lexical_defs - edge @prog.root_defs -> @stmt.root_defs + edge @prog.defs -> @stmt.instance_defs + edge @prog.defs -> @stmt.root_defs + edge @prog.defs -> @stmt.static_defs } ;; Statements @@ -77,7 +76,6 @@ attribute node_symbol = node => symbol = (source-text node), source_n (uninterpreted) ]@stmt { node @stmt.instance_defs - node @stmt.lexical_defs node @stmt.lexical_scope node @stmt.root_defs node @stmt.static_defs @@ -88,8 +86,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n (module name:(_)@name) ]@class { ;; expose the class definition - edge @class.lexical_defs -> @name.lexical_def edge @class.root_defs -> @name.root_def + edge @class.static_defs -> @name.static_def ;; resolve the class in the lexical scope edge @name.ref -> @class.lexical_scope @@ -118,8 +116,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @body.lexical_scope -> @name.value ;; class body consists of body definitions - edge @name.body -> @body.lexical_defs - edge @body.lexical_defs -> @body.static_defs + edge @name.body -> @body.static_defs ;; root definitions are exposed upwards edge @class.root_defs -> @body.root_defs @@ -127,7 +124,6 @@ attribute node_symbol = node => symbol = (source-text node), source_n (body_statement)@body { node @body.instance_defs - node @body.lexical_defs node @body.lexical_scope node @body.root_defs node @body.static_defs @@ -138,10 +134,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @stmt.lexical_scope -> @body.lexical_scope ;; body definitions consists of statement definitions - edge @body.lexical_defs -> @stmt.lexical_defs edge @body.instance_defs -> @stmt.instance_defs - edge @body.static_defs -> @stmt.static_defs edge @body.root_defs -> @stmt.root_defs + edge @body.static_defs -> @stmt.static_defs } ;; Expressions @@ -156,12 +151,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n (method) (singleton_method) ]@expr { - node @expr.lexical_defs - node @expr.lexical_scope + node @expr.expr_value node @expr.instance_defs - node @expr.static_defs + node @expr.lexical_scope node @expr.root_defs - node @expr.expr_value + node @expr.static_defs } [ @@ -174,8 +168,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n } (assignment left:(_)@name right:(_)@value)@assign { - edge @assign.lexical_defs -> @name.lexical_def edge @assign.root_defs -> @name.root_def + edge @assign.static_defs -> @name.static_def edge @value.lexical_scope -> @assign.lexical_scope } @@ -239,9 +233,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n (scope_resolution) ]@identifier { node @identifier.body - node @identifier.lexical_def node @identifier.ref node @identifier.root_def + node @identifier.static_def node @identifier.value } @@ -293,20 +287,20 @@ attribute node_symbol = node => symbol = (source-text node), source_n node scope_sep attr (scope_sep) pop_symbol = "::" - edge @constant.lexical_def -> scope_sep + edge @constant.static_def -> scope_sep edge scope_sep -> def edge def -> @constant.body } (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { - edge @scope_res.lexical_def -> @scope.lexical_def edge @scope_res.root_def -> @scope.root_def - edge @scope.body -> @name.lexical_def + edge @scope_res.static_def -> @scope.static_def + edge @scope.body -> @name.static_def edge @name.body -> @scope_res.body } (scope_resolution !scope name:(_)@name)@scope_res { - edge @scope_res.root_def -> @name.lexical_def + edge @scope_res.root_def -> @name.static_def edge @name.body -> @scope_res.body } @@ -316,11 +310,10 @@ attribute node_symbol = node => symbol = (source-text node), source_n (comment)@comment { node @comment.body node @comment.instance_defs - node @comment.lexical_def - node @comment.lexical_defs node @comment.lexical_scope node @comment.root_def node @comment.root_defs + node @comment.static_def node @comment.static_defs node @comment.value } From d5f310c97ac1291e9e1ca2d9c1dc489570541490 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 22 May 2023 09:29:30 +0200 Subject: [PATCH 31/38] Use `.{def,ref}_value` Use `.def_value` instead of `.body` and `.ref_value` instead of `.value` to mirror `.def` and .ref`. This frees up `.value` which we can use instead of `.expr_value`. --- .../src/stack-graphs.tsg | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 5e0e9320a..080886036 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -113,10 +113,10 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @body.lexical_scope -> @class.lexical_scope ;; body inherits other definitions of this class - edge @body.lexical_scope -> @name.value + edge @body.lexical_scope -> @name.ref_value ;; class body consists of body definitions - edge @name.body -> @body.static_defs + edge @name.def_value -> @body.static_defs ;; root definitions are exposed upwards edge @class.root_defs -> @body.root_defs @@ -151,11 +151,11 @@ attribute node_symbol = node => symbol = (source-text node), source_n (method) (singleton_method) ]@expr { - node @expr.expr_value node @expr.instance_defs node @expr.lexical_scope node @expr.root_defs node @expr.static_defs + node @expr.value } [ @@ -164,7 +164,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n (_primary/scope_resolution) ]@name { edge @name.ref -> @name.lexical_scope - edge @name.expr_value -> @name.value + edge @name.value -> @name.ref_value } (assignment left:(_)@name right:(_)@value)@assign { @@ -178,9 +178,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n node dot attr (dot) push_symbol = "." - edge @call.expr_value -> @mthd_name.value + edge @call.value -> @mthd_name.ref_value edge @mthd_name.ref -> dot - edge dot -> @recv.expr_value + edge dot -> @recv.value edge @recv.lexical_scope -> @call.lexical_scope } @@ -206,7 +206,6 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge dot -> def } - ;; Identifiers ;; ^^^^^^^^^^^ @@ -215,28 +214,28 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; definition nodes, and ensure both support arbitrarily deep nesting. ;; ;; The nodes available to connect the refences are: -;; .ref The reference. This node should be connected to the -;; lexical scope where the definition should resolve. -;; .value The value the reference resolves to. References that -;; need to be resolved in this value should connect to -;; this node. +;; .ref The reference. This node should be connected to the +;; lexical scope where the definition should resolve. +;; .ref_value The value the reference resolves to. References that +;; need to be resolved in this value should connect to +;; this node. ;; ;; The nodes available to connect the definitions are: -;; .def The definition. Scopes exposing the definition should -;; create an edge to this node. -;; .body The body of this definition. This node should be connected -;; to the definitions that are members of this definition. +;; .def The definition. Scopes exposing the definition should +;; create an edge to this node. +;; .def_value The body of this definition. This node should be connected +;; to the definitions that are members of this definition. [ (constant) (identifier) (scope_resolution) ]@identifier { - node @identifier.body + node @identifier.def_value node @identifier.ref + node @identifier.ref_value node @identifier.root_def node @identifier.static_def - node @identifier.value } ;;;; References @@ -249,7 +248,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n node scope_sep attr (scope_sep) push_symbol = "::" - edge @constant.value -> ref + edge @constant.ref_value -> ref edge ref -> scope_sep edge scope_sep -> @constant.ref } @@ -258,13 +257,13 @@ attribute node_symbol = node => symbol = (source-text node), source_n node ref attr (ref) node_reference = @identifier - edge @identifier.value -> ref + edge @identifier.ref_value -> ref edge ref -> @identifier.ref } (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { - edge @scope_res.value -> @name.value - edge @name.ref -> @scope.value + edge @scope_res.ref_value -> @name.ref_value + edge @name.ref -> @scope.ref_value edge @scope.ref -> @scope_res.ref } @@ -272,7 +271,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n node root_scope attr (root_scope) symbol_reference = "<::>" - edge @scope_res.value -> @name.value + edge @scope_res.ref_value -> @name.ref_value edge @name.ref -> root_scope edge root_scope -> @scope_res.ref } @@ -289,31 +288,31 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @constant.static_def -> scope_sep edge scope_sep -> def - edge def -> @constant.body + edge def -> @constant.def_value } (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { edge @scope_res.root_def -> @scope.root_def edge @scope_res.static_def -> @scope.static_def - edge @scope.body -> @name.static_def - edge @name.body -> @scope_res.body + edge @scope.def_value -> @name.static_def + edge @name.def_value -> @scope_res.def_value } (scope_resolution !scope name:(_)@name)@scope_res { edge @scope_res.root_def -> @name.static_def - edge @name.body -> @scope_res.body + edge @name.def_value -> @scope_res.def_value } ;; Comments ;; ^^^^^^^^ (comment)@comment { - node @comment.body + node @comment.def_value node @comment.instance_defs node @comment.lexical_scope + node @comment.ref_value node @comment.root_def node @comment.root_defs node @comment.static_def node @comment.static_defs - node @comment.value } From ee4878912f45176d833d24a12965166185b8318a Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 22 May 2023 13:05:27 +0200 Subject: [PATCH 32/38] Implement local variables and lexical scoping Local variables are only visible in the block they are defined, and only after they've been assigned. Statements are chained, by conencting their `.lexical_scope` to the `.lexical_scope` and the `.local_defs` of the preceding statement. Since the chaining behavior of statements is the same in a program and in a `body_statement`, this is factored out into shared stanzas. --- .../src/stack-graphs.tsg | 95 +++++++++++++------ .../test/statements/local-variables.rb | 14 +++ 2 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/statements/local-variables.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 080886036..9cbc7495a 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -40,9 +40,6 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; ^^^^^^^ (program)@prog { - node @prog.defs - node @prog.lexical_scope - ;; program lexical scope inherits global scope edge @prog.lexical_scope -> ROOT_NODE @@ -54,17 +51,46 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @prog.lexical_scope -> root_scope ;; top-level definitions are accessible from the global scope - edge ROOT_NODE -> @prog.defs + edge ROOT_NODE -> @prog.instance_defs + edge ROOT_NODE -> @prog.root_defs + edge ROOT_NODE -> @prog.static_defs } -(program (_)@stmt)@prog { - ;; statements inherit program lexical scope - edge @stmt.lexical_scope -> @prog.lexical_scope +;; Bodies + +[ + (program) + (body_statement) +]@body { + node @body.instance_defs + node @body.lexical_scope + node @body.root_defs + node @body.static_defs +} +[ + (program (_)@stmt)@body + (body_statement (_)@stmt)@body +] { ;; program inherits statement definitions - edge @prog.defs -> @stmt.instance_defs - edge @prog.defs -> @stmt.root_defs - edge @prog.defs -> @stmt.static_defs + edge @body.instance_defs -> @stmt.instance_defs + edge @body.root_defs -> @stmt.root_defs + edge @body.static_defs -> @stmt.static_defs +} + +[ + (program . (_)@first)@body + (body_statement . (_)@first)@body +] { + edge @first.lexical_scope -> @body.lexical_scope +} + +[ + (program (_)@left . (_)@right) + (body_statement (_)@left . (_)@right) +] { + edge @right.lexical_scope -> @left.lexical_scope + edge @right.lexical_scope -> @left.local_defs } ;; Statements @@ -77,6 +103,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n ]@stmt { node @stmt.instance_defs node @stmt.lexical_scope + node @stmt.local_defs node @stmt.root_defs node @stmt.static_defs } @@ -122,28 +149,12 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @class.root_defs -> @body.root_defs } -(body_statement)@body { - node @body.instance_defs - node @body.lexical_scope - node @body.root_defs - node @body.static_defs -} - -(body_statement (_)@stmt)@body { - ;; statements inherits body lexical scope - edge @stmt.lexical_scope -> @body.lexical_scope - - ;; body definitions consists of statement definitions - edge @body.instance_defs -> @stmt.instance_defs - edge @body.root_defs -> @stmt.root_defs - edge @body.static_defs -> @stmt.static_defs -} - ;; Expressions ;; ^^^^^^^^^^^ [ (_primary/constant) + (_primary/identifier) (_primary/scope_resolution) (assignment) (call) @@ -153,6 +164,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n ]@expr { node @expr.instance_defs node @expr.lexical_scope + node @expr.local_defs node @expr.root_defs node @expr.static_defs node @expr.value @@ -163,15 +175,29 @@ attribute node_symbol = node => symbol = (source-text node), source_n (_primary/identifier) (_primary/scope_resolution) ]@name { + node pop_dot + attr (pop_dot) pop_symbol = "." + + node push_dot + attr (push_dot) push_symbol = "." + + ;; The value of the expression is the value if the reference, but only + ;; if we are trying to look _inside_ the value. This prevents assignments + ;; of the form `foo = bar` to act as aliases. + edge @name.value -> pop_dot + edge pop_dot -> push_dot + edge push_dot -> @name.ref_value edge @name.ref -> @name.lexical_scope - edge @name.value -> @name.ref_value } (assignment left:(_)@name right:(_)@value)@assign { + edge @value.lexical_scope -> @assign.lexical_scope + + edge @assign.local_defs -> @name.local_def edge @assign.root_defs -> @name.root_def edge @assign.static_defs -> @name.static_def - edge @value.lexical_scope -> @assign.lexical_scope + edge @name.def_value -> @value.value } (call receiver:(_)@recv method:(_)@mthd_name)@call { @@ -232,6 +258,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n (scope_resolution) ]@identifier { node @identifier.def_value + node @identifier.local_def node @identifier.ref node @identifier.ref_value node @identifier.root_def @@ -291,6 +318,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge def -> @constant.def_value } +(identifier)@identifier { + node def + attr (def) node_definition = @identifier + + edge @identifier.local_def -> def + edge def -> @identifier.def_value +} + (scope_resolution scope:(_)@scope name:(_)@name)@scope_res { edge @scope_res.root_def -> @scope.root_def edge @scope_res.static_def -> @scope.static_def @@ -310,6 +345,8 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @comment.def_value node @comment.instance_defs node @comment.lexical_scope + node @comment.local_def + node @comment.local_defs node @comment.ref_value node @comment.root_def node @comment.root_defs diff --git a/languages/tree-sitter-stack-graphs-ruby/test/statements/local-variables.rb b/languages/tree-sitter-stack-graphs-ruby/test/statements/local-variables.rb new file mode 100644 index 000000000..8a8569985 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/statements/local-variables.rb @@ -0,0 +1,14 @@ +foo = 42 + +module M + bar = foo + # ^ defined: 1 + bar + # ^ defined: 4 +end + +foo +# ^ defined: 1 + +bar +# ^ defined: From 22812c9da7bc7149cd2e8882d6f165fa29036e18 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Mon, 22 May 2023 17:23:05 +0200 Subject: [PATCH 33/38] Also allow dereferencing `::` through constants --- .../src/stack-graphs.tsg | 27 ++++++++++++++++++- .../classes/refer-instance-static-methods.rb | 1 - 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 9cbc7495a..ee13ffb80 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -170,6 +170,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @expr.value } +[ + (_primary/constant) + (_primary/identifier) + (_primary/scope_resolution) +]@name { + edge @name.ref -> @name.lexical_scope +} + [ (_primary/constant) (_primary/identifier) @@ -187,7 +195,24 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.value -> pop_dot edge pop_dot -> push_dot edge push_dot -> @name.ref_value - edge @name.ref -> @name.lexical_scope +} + +[ + (_primary/constant) + (_primary/scope_resolution) +]@name { + node pop_double_colon + attr (pop_double_colon) pop_symbol = "::" + + node push_double_colon + attr (push_double_colon) push_symbol = "::" + + ;; The value of the expression is the value if the reference, but only + ;; if we are trying to look _inside_ the value. This prevents assignments + ;; of the form `foo = bar` to act as aliases. + edge @name.value -> pop_double_colon + edge pop_double_colon -> push_double_colon + edge push_double_colon -> @name.ref_value } (assignment left:(_)@name right:(_)@value)@assign { diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb index 42294f8e5..a8e97a280 100644 --- a/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refer-instance-static-methods.rb @@ -12,4 +12,3 @@ def self.bar Foo.bar # ^ defined: 5 - From 2ef2114b182eac5a8bb1a0dadd10546d2024acbe Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Tue, 23 May 2023 14:37:26 +0200 Subject: [PATCH 34/38] Implement refinement Refinements are part of modules that provide additional instance methods on classes that can be brought into scope by `using` the module. Because refinements are not globally available, method resolution must carry scope of the call to allow finding refinements at the call site. A detailed example of refinement with the corresponding stack graph is included in `doc/refinement.png`. --- .../tree-sitter-stack-graphs-ruby/Cargo.toml | 2 + .../doc/refinement.png | Bin 0 -> 386284 bytes .../tree-sitter-stack-graphs-ruby/rust/lib.rs | 20 +++- .../src/stack-graphs.tsg | 87 +++++++++++++++++- .../test/classes/refine-class.rb | 23 +++++ 5 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 languages/tree-sitter-stack-graphs-ruby/doc/refinement.png create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/refine-class.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml index f2e9b0808..f91eda976 100644 --- a/languages/tree-sitter-stack-graphs-ruby/Cargo.toml +++ b/languages/tree-sitter-stack-graphs-ruby/Cargo.toml @@ -30,8 +30,10 @@ cli = ["anyhow", "clap", "tree-sitter-stack-graphs/cli"] [dependencies] anyhow = { version = "1.0", optional = true } clap = { version = "4", optional = true, features = ["derive"] } +tree-sitter-graph = { version = "0.10.0" } tree-sitter-stack-graphs = { version = "0.6.0", path = "../../tree-sitter-stack-graphs" } tree-sitter-ruby = "0.20.0" +uuid = { version = "1.3", features = ["v4", "fast-rng"] } [dev-dependencies] anyhow = "1.0" diff --git a/languages/tree-sitter-stack-graphs-ruby/doc/refinement.png b/languages/tree-sitter-stack-graphs-ruby/doc/refinement.png new file mode 100644 index 0000000000000000000000000000000000000000..8705871ec90b7a9d073472b8f8cc9efbc0d890fe GIT binary patch literal 386284 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

7A+O4mf{#=X#&;zdDwy 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

eEKk!R}lKeppRXwxMYS;YMSS6QwN}UDr)% zFSUd%^kNgpd^&*pB3KuMp&g^xb8&Axsy*Ysu!FGwGmjH>1=jbt?_(-e@yfN$fu7I7 zY<~jbo=vwhR9h7#i+}AB*FR0Nf!`22*J`i{eC`AaRQU_AdQg$&sFp2r8HU>`5)hB4 z)5;xz8~In&XGhYGea=p;m|lg68|uqm6x5qi1Fm1sqDg{naWuX=O4(`@ugRwP0+_Gv z3%>`SU=(_M=l72X*BN8Hz%2Alj+U}so1l+&s6;lezy5W|e z`U#lc;|?Xc$IL6-ue1nGjQvz`$~N$VawvXfiX`z`B{`V&t2L<49DSBD~%`wkw+y`cwYiKX8 zUAtEF-`u-mmH)N?yuN`g*oR>6)s%oERXt$LjM--9!LWlw7pE^^#E`%LI3FL+mlVGb z=kDAId}f+@6Ei>Cg7?*gLkCW_rfU9SGUH8te)DG?J zpi^@dJfHuH(6D`hha8FKId=H4!~Hup6Hvmy?DOu$x}KhruCWd(bw8M`8yX#8P)`kK z2`?%vl&`3&;@`6;t!@x3lKI|smoLr^@(tfdAPpBF_;R*GDpY}YOUnRYxL$)Bx=&;_ zFQY(Gdkw6woJTp&pR2l$TE7TUaGNQ2{t9Wh%R>%2-Mcq8hdeKL@`m7$*$PG$7) zD;Ua~;)Op}B=BAZs2Qe~vhqDR%*9~`wN=iQiHt>M+AqPsh?bJi1S&Z?6+mhrx7@y$ zSwF3EC`PN}grh-)&T7CW84CCmE+Un}>>bGKFt7ML3dD;r`G zfK}cS#_eGAqO12D`zp&CE^H>UzsYSK-xMc&-m#*}A}wJ40gOfTXwm}QI{eLy08Qm& zN5htUU~q7aUI6}+xTV83rm8m&6B22pBchL6;=_}Jc`8f62CG9W$Mx))GrWR=s($cp zd6uA^4C`z0M%}Z%(=L(rZ~iuL;eDae4#F%9g8w*8%i|4=P~XEhGbh^UjUaDVqi#S& zN^?ZZhY$E8hjXr{>0~S?_FHJT1o9MF!zEM534(F4x`swM07r($Ssl<_5Ji5B;#oKc z`1_l=Wpl%jpdZy{yrL>d7`Y&G;Yu+QQ^sm7DFmLMUDGvJ^uh3hnS_itHw2(0pbrw3 zGBVqT?jp1O79{Za(4Z7n-ypIqb@2iMS%zlpt+prpTtxp%@@>DRb7tw*#jOsi9u!03 zBR9p-iNT95_5tA5h;+r$jFQCC@6x!_E6%lqyY#>3|q4!|Vl z{ZKZaZL45>cS@?_otY8zMM&_o5oCF05@LZ#3q^NPK6~T6`s{=`S-dWgOA{9{(UUbu zLpkV^0*7Bb4S)eu2;o;Taa_Uh^Vjd+2L$ipSKi-@f`+sIQk5_xCTRrmr5_L);YIy|Cp)ItlYRE7u1F>Ulrr~}JHu{rhODB&^rZo@vd$(F(pf_EP_4;r%&Ja~Xn39I=72@?C5 zBTNsGx`6AKIbu0lG<@_{lAM=dE&{KzUUxV^z;M+wv2W%%@dv_RU>?DTSyLp3%UKqz zN?c(#TYMMidO&K}f)@|*_m8BNW@r7cUk|dKY2R@Xs3$lG%O3yqiW5c^>QAzy1O(nZ zkhd1TdNEG^jbhkFul->-v5{(Mg6RtZYEjq$h9oANAm_nlYXx!q(fi};6>M|ozwC|I zY}lHLk2FVH=lEjqPbM{F0-}~I6ci{QLhglJ66uN_ELVdlQEu@lb$@BS3=b5s2bxeb zl0XcDBkD*7BSc-WKnc3$V~th@tU=q^pM+>lD6&bd>O&SvbDRJ$M05d~Y(-?Z&vEGrn&GSE0QGPnu=J1_1$iY$&7xEQxET_W!*~EfdSeP2%j|EMB%aC!Co=%S=$W{8%T# z$ER}dqVvomE-i#`st+HxV}v{Xi`TeP09+WRzB(-w0XK>&p2c5P-0dw_13lM~b6XgF z6bVh#b=vnn=Teg(c+*GUNP$~{T|k5f#MZac#36rs?VnBT7();U+qnpI)vYp)RP_r& z8yErorOF!ph=D;(zQ%`0+a<_&JW)g0N0?rheq>TNAEju>2HZ) z+H6PG``L4=ALB&s1BeCjCvi2lM~S*-V@M0NAOG=;Ich;^P5{S7?ED{$3W+HXA&Eo9 zv9jb>ory z5V|=WO;x=mz)59Omc7OGdEGx44V;scnDD{auD59qPat%#l=_eBSgP5da86%IlxJ!mJkYO{HjJ>wBfC0t{pgjac8kgXt3hQ<5MD9H6t;3Q$1+ z4qIFTj}*K%VSs`2?x3b76ChX8!gqR(q%t35(r<2h$-j%IQ3KVAvLw9 z`S~5jT@4NE$XJQ|&;E1C1*wS8lY$Eoq5R@RuuX~=;F}WAhDE*^nLJ_b-fV#gP2Bv$ zhO}dEAld;$RJPZSf=BVNVcqqh;9#e=(Alyzdp>8i8s6OrE0Q5hm5rg4fhzP0c%ZnT zCy6%?G%qIu;8MS@MT!}J0_E=x9Ah_O^8$Gnfp4&TH`|p){*Mdb){%2BuzCyWCEgQJ`YSclJPJYvM{jDv$XgxVwN3w8T@uo=#f!o<45k|2GlywwbgawB5Zpe2LoUiw_s9@F5$6~Fr!gEj z{FVGQd=-%y!*iIN3pghZ%F1r^qo5 zMQ>>sxNX;+8?(C{Ou$I82baENNwf0%UiQoF%aorShbNmc&SZnw__c4e4{^f~4M{a` zxLH}RLSu07$#Li3o!wJtS%?9(@n1{|aQxgwOy$3?R#ILlRw1?n(mRN#Zd~ljuHyeF zOD6}nXH?2)oT;do9>vx?bWeHt(hs!{QcBD7;7WcI5ZH7e)=DAL!^y~)Y6X%Q^TxP; z@0(hzD(XU^QfKh_Pge7XJ%(=xxMw6~loH4mNI{hi*Oo8o=Dy$Fxqz8WH9Z5SvQjry;QP+vHC;%|ByC z^twJ=X$PDY`1#9g!jV%*zFgMgz@sW4*4s&EgqE`hGMnvzBp#jowI8|W(Sa{kGr%MQ zo*sv+knQ~rAN}^5|9&6eSNhY9z!w3qhsr%D!A2p_)`7hPA{R0_@e8LMYJe!&txM}6 z-qv*KRZfy-4_k75>hHNZ5`7ULSlxxTO-NYS0dD{wK+f+%P~}om6jgC2@CP1Z|V(g2(uM9Ad%bH99LtO2MitOsIdr!xnR`7 zFyQ);gyHW$@xBnI#Dv$($jF%M6SwrrJXhjG4)mnYY#&XZ8BR_+!ouJZkV!RzQ52R& zt1;Vu+Bk(N+wgt}&laqPo!+%38K2=|oNM2^9ETnHKUn`!_Js z!7I9=LSX5wdTXwt!L>_|#uBy9Ip&1if{ejY7IJ(>65jmMaG0}VlWZatgV z(tQtA66*U4nGf_9mtInJGCBQ*m%Y(VEk|o`Wo7tr3k<@+T3bQE*p^fhrm&Z=EmFm_ z798^sVopW@n}QyKE!2r`WOh~!V@67bl^Bodnf^O5EZ3kIKautWQI~}5LwKi%XuSn6 zdNVjYCj**!=cxao8OQ*2HYlF=>}Y4+dVm{fHU7d6wYTwb8+t=;TFei4{za?f@hJ*E|5V{VuiZ;Iba4CRFm$*rfRlfLk!4bwV==kE1OHN_o<_;yD?v6X* z*&t(}HQ?1fwQ~dby0HzFN0yGQ{p?t5FIpX>Qac_@Pdmf0YXv$Rba%%4_*|-S;)0!2 z=0Ad61fEUamri_s#QrWR=_(FccwnH(!(C7yzg6vN<7b4-Q+!AFU@S&E+OdA=<+`xr zQ1~=L!a>k#+eaCK!s-s&Ae3dxuYA8OxcfZj=PE5yobws23 zVfHXG6?b)MZN5;@RA*zALGy}o^>MT1B!nb=(DI)Q7;x1*nIDj~&J^bys9=O~zIVer zd?2X9r7tfOz8G#qDTONxy&RYAiv62INJ)c4s%4b>2>yaFy1O?ENfE?-eoZU76Ra%5 z#6_m1kA?b*Kwi~!kRAdJs6jTK-gEu8 zMV39b^5GZR1cf@IJ%W82^HJcTQy|_~6lHWIc$+m%Y4`&Wpwb6dE{CxLIx6J2=GP6% zjqtz6?j&Cxj7zuSqkWu~X(%dii6H{k4Gyp-9_dt7eyWk|)zyybPu}pTw zQX{cxpcy<7%78qa2uN}J=D!)EMOK=W!gh?fqQJY62z6{?@1kxXUsHlhHwFXJ4i9AU1Wk(vd7wnmWyOe%?UI8%zdn=rHW@N6x(cwIdoPIUM zEjTyXPKpW%senPhG--#+^zE87NGypx#_mnQ>CaCKku=`1m(|%gs`{qB)Yxb(Ucfgd zUxn|FkygOX>sN08WF|o87dH@bgb7rF#$XC8wLk?x zDRLDa(fxpuE5W^vu@#<30@0aYo?FWLeodO><`AN?-p&tMw76ZjeAssWWkwiz+5E2n zDh%0phbpjZglde(fo*qW>)Lhz5Tqfv>{(Q-H&}4)#sKWqRw<8YkKpA*30lR;I6-!# z>K+4O3YdG(H6Qdf>KK$V9**xu#TpN{7`Rj(IC${d_rGnCfD2YJZw*98Kvh-EpEgv( zRvBQ-`?QSZ#6%W`BfSoo_+$8m?agOQHQR%fEpYD8t}UZHS$u~0Jgj$uM7tL6~zkr$X5 zV7!w72L~i;FG!+fLfOg;9Qu!rvNDAb)HiQtq!4>an1T}T9Dt+C$&E}-R#08N6kM?y z^7BY#ekVgPAqCDF#1ZkypIhExx~Zft!u7iBjbH?fm?@u8(IZTlZBb<=V$CR>H{-Jzo*UJes3i zR1As2J5$NW2xOORL?Bt4d=x<|1&vJRZ$d7Nmw=QQgmx|Ipx~ym?y(C;9W0IXJ-e_t zktQN&-I~parUgMPD5(V6UDZ*t*G2CSZt)zBw6UOR(e8rl`iAY>dz+PkkHk5cAkf`p z+f5fGa9W?s^>*ubD2)$UDeU7-Y8{z` z9o|+7F~ddKtq&u;uHOz-9WUVtPvA|EjSYI)@*;3?$0~UFGfu&69QH~uJ8%(Zy_5x7 z1IcnjR2^-QuN6u;T;AOrynOM|%s9{oTmV3vHpoE!6SLQ<|LP7WHuVz2OmK}mBOgr< zL|!J?A<{Lak=rAIu*DY9m>O%Tekc#s(3T&3t%>j?Vd3QRV%za}yiyEm8LL1ZBlTjD zqm7;T15I+pq9h@A4}Lmcepb!k8dRHv2#C`hF9#L2pwM9nlwvTGgB3j8m6n@UR%|hz zg2>DTV-cVI3JUSC1kW1NWpNp#x9_LJ6;VAB3pWHZfGrd6xj}zL%x4ZRFdNohxfG@^ z>ed!pfVFM>Ewmu!-;pLAyU%J93cP$5EgIF&rt%rkJ-9G+ooxOTjwg!+f8vXUUG8Bc zn_cP1y&<@E%;xG(n{d0~faB$?plG1O)`PiHOt*PjC&$kl`PSrD&eB zLJ=UHm9AJPf8{)!Y(|TavZ?UzL8G8jG5-(ERadc1l&2I(I!YLe!h;5g3o(}>bHv5> zpek+wC~y#i)Qdh~JrI0S%|sXl2mC&-o4VOriNa0{O$_yY8;V#s=G62DU55u}V0Qj7 zv?*t8-y_Ps3LqfinP1H6usw6UBU4aF?H0$fgp&+7yiUJ`(p~)0;TUb?ToKk|aWOZx z11t6NGZ zD#6P7dpB7^$uL{K1z$5|=^3+qTe{{8V{Q|UREBAQ{b*1{OyfnWuW#|r13Qsv1_e>x zPg(8#P0CyB+EAT$`_9?ii-i?IY4rnzn{ll;OV#do6?{*V2Lu^Ec=oc$V`GqE) z0_RMg=f~ngad67XH=xZ09tIa{NtAqgJ!+^XJ_fh|9AMe|hhv2cs8JlBA zdlm?}9qXZ2nvZWeoWN~M>gzBnJCNM0f?x2x2NT9~osNdX zZQ%7z!t?ONi${gPx-`;iaK?g&%YAv?;n)pS3-w@rZDW9ygqsT^4(6(*n-< z4T8pr&!2lbZ|TH-KcTBDv~_lj#*Q(p+sMArIW@qqo54NCf5-y=F`N#bs+%#riS3F) z9^PDAg`%x@GVcAgdJC zHX02)u#G^^HL0}tLuqs$4r#+Bp3hORtZ@78**ZbXS$FEWW;o7^A(ev%xjcWJn@jNc z0DYf-RjfKo#~h+{uVFUPD~+5WK#?7dxzMZExT@dhyr_=sMg)+gxCW z9Ew_jz6xa(I`8SWp9FM1GEk5iHGn%Dq=j8ucL)fmd)|Eu8EkLQ50c0ZWL)58U`k3v z3~rLL>B(_H5riL-nLUnGX87-B=#b>`6R+DNhRxA*VmiRE{{pdx$0G&lp9?;RW3Kw} zD=tG#wJoZKSO#Mrg03LjYrVSQU1HRX#W--!jsa$T#+Xzy|Ba-T51{|^SV3xqjhOwA zJHo#oKv*CfFO|%YQ3na>o)U`Sj`OruijWl)T!m6@>f1h>WQi^p1&gLEFu(=IRuAq@ zD&;xleI9H+VsvCz^0(zlS@RkAKB-@sp1JfEGQ2i4{OASz7sBu=D!@#U^Bx1hB_x12 ziS1~9c1*{P*+#^Vd8vAP%VV(?UekMC=L@X}In z2R@op1dAyZ(2L{wPFm&z4=xQ+C6(zaHeEyLHHcYQ6x_8Y{b;F?{MJ?@;-1|9b z4{T*D&YgSk4aa8L;EhxGP&K%g=aCMJDF5JdK)fKy;YgGgtjGwMk^zm8u(ROU3If#s z`ZfiQtPyfsAmgFpOKMsdHug=7#2L>7UbZ@?_4tCIF*gTZJ(V#)m?oOg=UYSKU!{B2o17 zeW1GZ`0^K<;y^#xc4#rKn1I4-kbG{=dVQ-T_={z48rKRh~m4N5lD zQY6d*x|}bqdct}54d4e?!Lc_66UFeDA32)wzTLk*uz*_a2-#XnN?BRFXt!&o zxh4{VBbHiONGQg;sE4Y)q`gN$2M-3^tDdg2qW%Eh`@mnP`>eZ1L$9T{phZa!H!;v- zk(cv=L%=T?7F}GAx1cE%x9QmXWXJ9t*YzM1k%0ibSZ|k|^*vtnB~lM9u#gMKCpy@+ zGrzA!VVy?cf~kS`@%>=3@bZ2P#{gxcvQ_*f+DNT9Q#^W9EX1sTulbg5hI^!Os$k51 zB8`NBsw-Oa?b*{{JO+FJd)wHi?x92`7cp>LG)<+%J06fol9P_`8yNKBl(<>)cg!w+ zAYYCwII`ydh#zAzMV6I{@G4+V#8QKJ68yHB!uyDyjYWD|zQQ|nYYbrlYqzu{wRS^w z@~tT`%-$5Y@{`=$w$#ZJv+deaZrNkR4hjeI_2KteyTk;Hn1kgOMF$3UEHNo_@y!U0 zjy)7Jj!@tVDrJEbe9TZ#QQl7Y&dSXX9lLyIFZb{x;>#SgBbFsq1oA=D-#;w30y&R& zT?xArtlkl^@Z%_(K~rB-@;Kne4aUEHpiY1;j$E>}iD_&9q3Atd?%N0_QIO4I3fk$N zbq{e1Z?N$pR*x=rgqE_GGMf(=ydHNI0n2EzjjfnT|Y314GbNu zeZYT006no|!uMY=+KmunyOaud6;ww7D7@RPH!UckDhsm>7!|en%O7KtHvI-_9oVff zGAN>3MB8r)XTY&yQCPA9z`&r1^7;5O2IaQyi&jXDMt7hZ)elz!hZlXs&1?HHRh%^e zijTU7S0DKg(X{N@CM#IB?=avJFddU)puj0i89G$-!>b?fYqt^Oz}5BSv=DADfx>!S z8y_er$asp&uqx)gI>3$GeVm-Etc?k2c2=0X;r<)SZcDNDTIrg_2&zm9yi|1%SfQyt zLupB?1LU-A&z^NWm*>UNl5{0GVR#NH6Mc|PGRkfArh?!FdF~>!^{VzAX9)D>@md&g z6Zi_(LCjan{`~tjj$gt*gc65ZaM=}y5pe(c;j<-W$1eXlwMVrr1MOP;%a=#qXoFrK ze*T@DiBvSHM1vMY`}_LDT!ufno}a}UAijT&zy74ZKBg`xD9ERvP*mdpB#tB!yg5UH zD+!w_s$obpt@w|SAq0Glx+p!trlGQir@=l##qo8r&yKDyq=Aq1nK_peGl4!Pev7NY z&{~|M84yhL7Mb*xU01oD-FR`sotSJu&4h{pb6g4qH|ocd%a;@P3t9_r0pdZ@!CZxk zv+L>J_=cU!wKtAx7(7a{1F*Hee>!#S=l%N%htpd7VIO<|FN5SUe&4pD_J3S}#Qn|r z2N6yLvL?qJv%e3-B_-D@Tbbw&$6+@6VvgXiVgFfX5x2h7!+*0)3k>AoNeY`HlCzm)de=Ev?XUSLO469`W}Waov0hDmU~VX$Ee9 zfQaQlXUEeP^kzs?V+#ekTt0i`EYU>cdrmlR&EBsFVk|Hq2f_>D$>F-v+{|I~msIbo zXkg{JCI9u$flUtY?~QD1eKP~Jy0@PFaLAQDUEuX_-(gO6_Nt2Qm`az6(5M3^2)+25 zI~mv>ntDnUO74#yJ=$$75Ss;?(|Pa^$_bSxwR8qw@f`QR|Xm)7+0M1+&;&=@l`C^4Y!j-u2YLmt2U3%G%L~E_v04iUUbXuS=GHsP&6pedmSl1Pt4ri zs}{0(I}RsLZ20R{C^YYgvCX0e7)*ynDF}JldJIJEQ~14X4VUe*@lks^JNwAnj|e#- zJdi{!<1rK5wgn3x7$LD*F3|7&Rxj|xFf9P~OTY9HJw5&48PCUud$Y{-o@`G*ZQUC+ zM9d2q4)d^~-$ZkV+K0ljLm3<9k?ooB6kHN)CcWze62VJ;*Vze#R2dNT8PxuyuCYN3Mv3Z~ z>{1VLiP;}B%F$@bQSGfHS}RbG@jAm1PK=4XSY4~`0lZp)`FI$XUqLNmOcvLXBU3t$ zvT^soo(9G0@NIjnx9>qKUy00hUn%|`+zrBr1vs{cq%SCG^jwIeEYr;i$1#r2fMBpB z5Cmr8)D@D1&1hgSw)Y${zV)=uyWxkd(<+pzAHO=8nwS`6=ukI4 zgenUFu_`2Q-+dtm+vOSK6Md`O1U{tkv&+sG9&TN)bJuI8fOB+x1Zo+~VbiH6vK{w1 zTxwWoxDfr(dPHXH=Y!NDE-!LyOOO0S4cFNbkemq;Mj(ig9REkvcYtHv_F>;rntGxk z%E)NRh$1^BBhj{3Ao?nd$&(srq4bmb+q(g`%2L(LcA&tv`0Y_hKWoo;>R40z%st*X>yyj+n zl`@4m9p9|Lp#Fhy*f2!T@PcHy(fzUzaMt%-ax<%enGN<-N)JF-VXLKzur+{M;AtSj z!yD)`Mq4l*T20*4JQ3OK{^^_X@h0=4d?w4v~*PKww52^ zQxJcUoT=l1AZ!CiUw!n}I(Zyfx*P9dPDUsh%xg4&2cWV5dGR&mUTuytPQaPhTb$Xo z0F$`gtP&W>R~d8Hq7Pb+55v*%(yHU=nJcK^oZ4M>;m6zt`QdihEqrG?UH;Xyv0Jxp z<@G#?h8^b(6JD{Rq^spr#z?w68&tpJ)#ZFlIgK5&F7b6lGmY9 z344(Inm0CjiEOr&*3C&7|J7j_tL$k)GqXSv53^$ZH87ywL7wB3Aj3_h!??vGW7+Ci z!ErA}&0uZglEs1mbP&_N!Cdn#?rRcgP*(xL29EX-&}FDD!Ni>$9A84cxk==Y*Q+n2?+h}A;gjDSNBaky^WW@ zZWLO%-KTl=Gm-i62azq;bWU&Cu)*83Ivg*TK`58VFT3#2!H-)cF{vb<7D^4`LkeZy zDAY`jS{Gn9+FLKQ0*?{w0zU|y0djBO`CUUp<49T)DK%ir0)GXcBhSdi2qa+xEG~uD zRa{I*E7gf{197v@FAGF&OXt|V?iAW+GVEA*Z^u8t6no+#vV|^oypDXBxq}bSY-0MF z)k+E0bqqnMS>2Sc*sRgr0X|t+$L?pTne#aVmf!7Btq^@9 z=>_IzuZ2|fuWxLBLM84%puhkd)j8@mkZ6h*g6xcrVEnMNZQA!kYtjyBdM`WrYdxLe)B!(v;aSsfBzWov=g|EC8J?mPaDPjSm>ZC)s zIaF7Z?}@rklxUBiDSbnov>)Y0h+z&7SRrp1{{dJ^v};i`>hG;1Lu;yF_XmIlAd?CV zszl7h#b`+-mVwtQZXR^GtosdW+)ssEZ68cTvU87i6SV+I0m|wShnj}qGfI&71P0HI z|KxGG*oTQ53kM{SDq90AfH7I4Uh}gm0#E`eArnyVZ-sp0rjyF(#?1EHIeQbk-fa&}UrRFl5MrlzVpFR~sm57n);8Tw|archp9o;UGl zI1A7_nP}%Q{zv>9Ck9x*FY!oxS z_28BJH|nkq7B9{fkHQeG?Sejn>XN=pzUK|dykX+t;1IHq53F<(^9EeaKypxJ_~N|A zdqRPqiEj_}7dKh+Bt|!+;se z=9D|^QW~-5I@(F6l7Woy-Htbgq;=zYGp#nzRlp7fCA6BQp|5rW*q6chRkPL8nG6uOBWjdU|Ie1bHdFE@G3%unYo*8 z`uXK(TeuboJ7J%?|4g&N<>O19^Lrogrf`xf5mJJ2P0VHBR2tGWr@{d$RY}N~K(Jt~ zi*F54o`Jg=lQK-*>7PR8!U5bn>|=;68w8X3t|{|I9Gw-vI$+yGI6d7XY@Yw{acfSi zuv3`Y+=;P`5}XzU_d87pNOJ$;+2r&ETSGKw?8BV$%P$}5BUGp1a1UL*hrbGeoi zUqM!OmN?GcA3(NIjua5pBT(bY~_ zHanrI`$%m=D#;EpvBq!e3&1jO$gd#_gDKs&M~ACSku(3z!QkcXHFGbA!MfFOYK_MT zLc(v#561@DALUJ_lZa&va9xT{$6QiU60u7FuCa!`BVl z55t0zgtNZ#gyYH*qJkpw*Z_PRpt~f0hPW(#+fF6M<%ol*9q=j!4G68%VG>MMU5yte z5ax%NaC}GBuRPom;FtraN^c-y@?bguQ-Y*R9^`niqKPu6hxZujQUFXO`yHNqU>-oy zx(s~1tx}Hrf)wM-tFNM}$3W8$Q2d2uwn)v>4ZAi;%f3FjE6BAT<&r{$Q>&dHuU%*_ z0R(XJ#5%>x;9`>+eoapVyUb2Fzd*_?fmfTf&KE;{eSz_l7&Da;W`L_FAXd;pAeqj} z%HqOV{&(2ddMxS7?b%+HiD-p}vxjJEwlu38l?`MS$vvUlyl4c_nzvZ>%HrC8k3YxV zt%RZ6`qc+fN`Y^9f3wbF2QaAZ%(ttms?gyoSX&E%>=?{q;4D9GhnECaeox`9h2dN& zkfkBR>(-BENqp@@^nEtu=rGB7XzX`L+$RY9?iqxCu@pi+{Mriw*7i5b0+ z0j7vC4xH&+BAD|h#n&YFj#K~qaX+W28Q9qFKBksdAs?MXynQ>l`3;qom!+gAAkX35v z=YC}4lJm>fwaz`3A%FZM5xRrT`k&B*Lc!&PY5)XaXg(a~4hk6-?UP==YL)FkuE3VS z-QQMcwV(QZo>~U;uLn)C;{VYPC=_%)k#kua$-zQVZKLfD@mV9 zC}p^a;`oq>cp3ElpP^QeeINBEE%9`_w5e zNeD@wlI=n z#Ba`gY%C7gzQo&uV6n%jgwNgv_0DgNW{J!1cg^UAX@qoJTNMUO;iA4t-s?R7}@(rk;`l+-kkjy%<5 z{roL(b%qoTf3bWKlPJeoJ^a4MPd_jhc?9r|M<;WV{duG+m|;iL44_WLZo~mQ2kY8T zQoo_aqUa(0%bibT-)<;#iYH4#Z6Lo{XQv7IV# zW@t)1*1aBeu6mBeSg#g$|2lF_TMgbrYU{JGsUsPj8h`+rR7w{j4p7MZ&+Gp-haLAR zZh_crn8K2);pf=-y_*5hz`Rjm^DZFX?;yzlRm^}8ADj_&F3mPo6Av=57ij9QAiTf@ zfSPhW@;mz)JD#PDhmcVZd*dPH{vQoz`CY&RWkSnO$kkukpw1&PN+f>>N1b(!BCF`7 zbzl|f(jF1%80MF;*?9Nnt}ZIi{Tyg_J&DzhUEN&-+RDs1H~O&f%&Bwm3;it4?q50e z_ZHs{64LM~4-xxr<$%~3z&CgM4(;80JXZPb;JqBuPKsU%QmC62)TCNS-Gf6c3?`3c zT|(o9nBdm})W|3h2jJH#j0>L7a*3FeFuQSrX3!?hAumg@&;9Zcl zEAwfshP?=8L+b}XZDm&Y>;gd+VmFG8dMOQ*L}F^`lvJ+^nj8RdTw867=ZQMHPLLoa zF;U4@ri(@0DO2%q&Grv&+pkv>MSwiCwxC)e6#dN(JJrIoCkv~NDiqyBQ*FO?PNk9J z9=oPyVWpYj^iA9p663Y`uv6!~U7mC8z^4~7M3oQN4&&&Z$z)cFd6K=ZySOO4R6q|R zTzCS{-QLXK8h#)rE%g4&*zahLW4j=iR%Kr45}sMQ7Na4VmtjiJPIV$l;@FWRK1VNR zU^f%(SeawC3zc$H>xg-bOVel8h$pb;mb z5&=Bii4qpq>BgT#qW+g!DqN=FfVI6bp6$#9)r8Lh!5{@V25`^Z&9sUw8gc3ge4_Sl z=){Uhuy4_zTWxfQean-byOsALQxb2s^#6hb|j716LTR+UqQjRGqa_`@tezq6#OM>WwJOa-6O<-&nkV}FA z;eC@xTbo|~c^*TLiSvHh6&!9K2JAx3pt$h+Meps@?f^)L0BoS)e8;(ZC?u+#)|F#xO!osI|sKxBd7TIEMWuqFwL# z`NxwU{aR$E;UFgxM{^7-B#%j;X2ICBjPPiN$2|B(FVxDqsD6~7rOKct6^uEFt}d>Q z3wr;Z_X4Vv0}jpQ-T$swic$Uc#yqKjC+;Dc{gs3#=rzv*Dm~iq3IMFoIoOhb=!&TG z<%@%6a`c~OXKaMGj=;+#?`#$N+?$wYBjNLqyFRog0HFyf1UCyw^1(D2Ln3_erx+Rk zoXQ>_A6M@<92REPL(OTwH#j$f`L0V(UaA&M`%fK{g*PQ8EIin($Dh~t@J?Yh@u>C# zPVuZQRB^}nUmeleQT}taKY4mxesJKS!%IQ6S0U=X=_r zMIz2d=}`FlU9nEWaRJd#XSl94)2#;&Yc2sK#hpYqJ!zi3`N%Cny*0BF0<``%ahE= z+cdN}lSs%22!@cNb-_2lBQ59FEe7ncXE^O^a9BL$+`9GabBo@d9{IE; zLTc1^EtHvi&r11}=UyEa*S;PkBv zjfKO#MFai)pmhbHwx^vL{_)?`j?;6RuH->y{drCOn=fAMOz>2S#*i^PJ3H32Tmw&% zh;79zwN4!fb-3wqbemW53v{Jn*0+NV9@hKBq248@7D)rB^ z@tq9@exJC`w9j-?xS;-CR*RoU9=E&zdQ|l=|5q32NgxUefXH?WpCFKf@PAQJoQCpt zvgQ!3Cme<@?xI5A4WLiK-o4dqsR*naO&hQHL^3#XJ!e?&{?HDs0ptQk;)id)x{S^?$nyNhb zoL)-~piG4~K*nx@KL^Rc@>o`)3HzP+)7E_@Vefe5tA}kmF3^e+539mB4_Mfx{1KQZ z7dQFbL_2&KJ**Zf%a>=%Oww_d zWDhE%*}_C{E0P6Mc<(V%fSWHV?Ln9@n3?Y!;(GX3YXVpnkAjp+s*gWbu3*u(H$cNCMxaYM7s86T7gH_vc<>)Vh1^4;!z!$j`M_HP8*3h_1#&m5^Z5q7nqa zR(}xGAF|2re_VixzB(R?=nk8V+E6q-*80;dEG%81<2YHY_u*3ZQ3av#gSxd@cX%0y zZwd5agtrT2NYV87wN-Wies94HkYIi&>etOSK_$7I7;c~$>;k62W1ZVWJkUYb(A8Jf zyf)m*ihzfbc$IrC?!wF)ip6K*Qinin;&avCv+4HJmz*>33pkV=!?lVq8F;(!(!C?x zO7UBCGfy=vdSOCShTbzB6J?^JC1M`pu?Uqb)YPjnZxm#|*Sc|^_~w9r=Z$WmJ5$@R zTxG{1Dz@42CtmXdhA{d+`IU-ZIUUASA7bPOkl`{ZZ`b@+5-VPgJBckY#MysXehMR{qi+934yxei==^o zNvnUZE1Dhr=gACDiDhvfFJN+Va(Z|gm_@WbF3S=7>pRWDj|1i=Ma-i^R^D8zv@kw5Dac-5jJlmj9l8&SfK9q&gNF3H&!x&r zc}~BAF_>(jzNO73@LV=vspVufoGk7l{~guJ?4N>nkGsBCtc?A#M z!yKI&*A2_%Cohgc0PEnDAwbecc5Z9600R-ToV(%SJM*Q>Ib|VT zB;yT$=$im3Goh8onM)c^2ohvva^k#1EjDFa*)v+{<%V81$Qi^lCK#&jqqj8{aoX7$ zmo5TpB(#6bm%Kq=AR5V@v9QHTQ>7~h9&hP53O=nRdjTHvMoeJGRn_Fz04m>UXr_!+ zRWXhSZKW)s_v-nvp6*~z>p}WIVAP^nxIfr?MbirY{iM^H9Mi*C4ih)%*nFXW2;{J6 z-z>fLL3lWsP+*puVS3poO3&&S6dNOjcm1V5Lm9A>5-W$I!c*cG_7`vOFlvpnpzfHo z&hFZ^E8$BQ=HP~txkcfR9{sd!r#!~d)ksnzW1hI7%~8Wh&H`Y#8YX8p{ot>ig|dcy zfwQr(an^*RrV!+_FbCwCPU9ug#TY%z-7v~S23A}x(Xbrouam|!xmvD^xHQjWFs|gl z)p7jf$q4rlXmY!47tygPPeM_p2IOa~D|yc;oFY4C+ihsnnuJ~;E>RtFX0M4wRBZ0% zEnALHA`I~UpKaZfnf8+%$cg{-z4y>u2P@v1iT8_L(APZ1F%t=jLSJUB1YVrjT*5V# zl?X|LJW;i17it`{rwPXtthQSa%ny<(ULvKRsLll`W(9;jIvP&MFCc2D^)X#19HaC! z?#PAj0?hjj5|eT;;!QZ^oJY7oN$|ml1fe(dkjcO?Yx8_021 zN=Fo|?|O*_E-bO@irK~AoB$_vdq12O8v-qqcj7Xh3vH+9!%CUSUus1Q9>$AOso7Ip zUQ)K5-sZHT@>H%>*fksOpfJzYVSXlo-l{6J7{lZd9QQ{vY@kXd!-P2xR!k&F#%w|@ zztV=~V4pUKr2$P}3*)!neGexIXFPKAK+?|8b`2QCC$j!SfhF>~5=;MoWiA}X?N4$N zRmx$cFqkt|`$Xa_^CqOg7_txl`cQvr?(hmq^FI~sFU};wj4BvVgw(p@%QTnmzm(a$ z#s6CNBflgfnIvgqk2$A(^$v$sXVYX)ZfkM&)syfJ|A7U>ZOz+-gKeU}pwg|oo#kFw z*mj0T$=6pU;T5kGl;Z1!xf;BP8Xb8)z?lFy0)mu}!WLt>dw_ot4HjqzP$@3B6U z|Hee5%CmhoZE;q}9gyMr7-FhLYud46_&j&!uiXZ^x&w`NI=@k^tCVBh)ip6TeH`M7 zL1!hK5@m&GW3p291)UPMJ=|{|td0y z18j_VjYw*J7pbZkgJ)H7HUrmVdzGxfz)K^q!b=r~*OM|2+|*u|eQDCbO+vsw)|_Ia zgw7pJ$J!nQ{y@tI*%S%FK@!X|TR!2TkdM{vCI{FE7rahuY+b@%;lg)Zb+_P@jXDt~ zzNo4Rr35z=HyE0|wJ~VCNlH2$1^63O88Fe20jdIy(WhJoGhq9)1?M--M!dE?a~Bzd zR{I!PC{KX}aRjgje*X&Mf`l1+j`I`bx_+3vcH%_PwoFGg;npXYtAvXGaJN`5XqQ0y zMa*esq5(_W8*iMm%m?CKC5v-6L#|c>VhiSL^f_sJe(swydMT8rSp7vX8j8NA+AjV{ z#-9{80xbh&Va@-2CG|AUoLLt5j+-qoBxGt%8uNr(m?Xx(^MGE)RIab(-rT2wz~Pn@ z7bG^1z~86ynIFd+%r<`Jj1j9@;$i?ueVMBrFU#v?KEHhK=U+N;*<-5tM=AHo z-fw-`@NMU1X)k$Du0Q;QW{9fR7G~wemy%bmg(}kUQ1x+{Gw8KmHk+HSZczbnWo*(_$bX zB;t{ZjVGm<4m8V6vJ8|w7_2jT#F?uk829NxpzT~>E(wYSc|5jy%vS8^nGMS!SXL8> z4h!>v<}A1P!}qSrhRUWM+uD|hdoNz9seXGD(qzIMc$UpBNcU&~KH=MW#DqSvYz67y*fiP2oA7dK1P78q(7ZKn_Ae(sgi*9_Ha`g{-B7j;F zQjE-%Ck+O0S42|U4$NgRql91sGyYA0WLf139Lm5OrOlp+H-RV%$&jA7wBNWXQ55gkaJ3h83^ zr&H0CHQUG}@rKlc3LBPJ9rFMmp`@RY)Hc6&uu{+f{TSch?m8e)^-yl$g5=S-y01SD zn7+SHsV#SEIWoB__hXUvS==7_uAUI1I$Rl&=>fdd3kqY~AMfGW3M{jB!2z=hCEN5B$$KMbm;PGKn^g-usuBqF82 zMzW0Kyo7>DT$oEmL2!?tV0h3S4jD;`Xf8KGZh-th=`O1$rV_rTpZedugT}-Unv;NX zXdIbJaR?}fz{)Rs z=h0F);N&{|d!f;wYK0QcW1V%W&2kBF0VFPd9AHPFl_{8Pu^?y&*7eDHXCURzuvH-S z^1*Jmv`ik_pW9RE!$oK*s96;7vV*Ye4|o?F@jLE*ByB~|svpuaG2h2Po(toe3k>n1 z#ZrUSH>PK&)Lw~ar8nVa$4>%n)W7`fnKOE8+L6(Bk~-N-;sI!=xKoN6SwQN3e`TCk z3db3VV5ANKB5QRYs}Ybj1BSg-*obiEpJ{~HEG{xofJZ2)sok-nJ<7|v&KtqLnk;Jj zQYWL3TK67edV1k|{3s=H6$?8KYE@-?0s@b=>cck&^r+C0bF;<>UpVr~%s)%hzBJsZ z*eEW%>dT5ks0#IDKO&%G_Z5*$j7LBrl{$}#z1S0u!eOI7(ge^&;9FJ6;y9(&ufEQ^ zYMFuCQ1;=IJm$HXdULq8w^%LW)+VG9GW>wM3P6Lp6rJbYKmi*qidi0aG>lv;{7(J! ziKMi|4&mZz-jI{Y%j|@#}ow98+Tg@ZVlgn%$i<|Fk=Y? z15|F4*I%{b6Og!l+KT42z}~_7 zL)t{R^d&|HC<**ZD*;8Ve8+ej^x0}bzU}ZF#Zl-7(6D*7i2XXay~|w>u&E`{RbjNC z`ra*BFIU9;%FQsFX5b&QPHMWlRW8P)G=2KSRi$8vIM(V#&6-TDw7mYkeshUm`nQB+ z0;@Rv=_8D;_{W?>GXGHRu1 zQ95%QoP)yYKe%g6=o!I0$Y5DX4p{7R4-qAMeN`602C+(0|JQEvOZ+;j5Q+ns2hdWC zwIfx~Uo=mx0%?!fe`0iKJ22f&1@*3Z6j2W?K6cn`VcSH#votQcb(!Z^dnC5m3W}#vPXZTw~rnAF_ElaC(Ym9Qq}rprz19E*}appmuct`B4yTa)0&>F z@Wzszezd}AwGY?jMq|?$rsgva8R2liQJkDg%BeC{&cFwBS-bQBiBnHG1jlUNk19c^ zJ_5RwiC)6z3-E8F2L48!*Zj|Ig16vFc*vd%+tu_u1260nYBRs$-Yymqcx%+lEK~~> z-?utpx|xN=%;Li*J#;U?%IfRuP3RrL6OeyUbq4YksnpLuA((^eK0N>RJfapnBy$ck zFQ)?)Dk4Zqccn9~!q;elc)P&AC5C4eV{x55zg&Y$+dnac7S+O9O(jboNUB}=Ymd-O z38f0bJ$p(C@t8I#kkk784C4ifOPSgtmpVGj_3>jfx*)wh<7SUIM?ubFv=u~C3XcsF zo0raknC~4scGKhuD;~4JIvk##iMpriD}cmpSPS4Y(>QEReE$I$pa9b}aI;JUgOF8< zOcQ$eYIC0DW3_jh^}Ud|&!v1Jw(hej33<86>pTx6zWP$WR+YdtSp=b@2IScmNa~}l4z*Q|R~aW?td0&%Vo$6y*IP4*lc6ihsr_zHFcQGPgu9aQeaMdsd^vl|w$Z5+8gzVT%=j@FxnGjtu`E`^@3zPIkg9dABVrli zcWh<4n@>vW1fp;WODD>g5ApDf*+QPDrKY|F*fz3h?8j2><#*cDUcVoFI8{AKyeI*7 z457>WP}iDvBwYIVWRKgr+!G*gkt!Zq!YH240&gH`3;@o_z6z@suN#pMh(b|7Mt>=u=J-V&_#gs{vF zg`_PDql}MsV(uT+L000!=&1wh@rL zN(())jO!g73C3l&7{dk=!3YFrRZ+~?zlFo*Kvor88xRQ&{4-x8G7#|}fmE1b=*z~) z5!+XYXE&@^={DZ?&8|?f^Y|8f6O;I%opp@jtz53Hu3hnHn?a(%ut0=3N>C_3e7JR^ zOE=nIm(J~}N+s@fP{H(#j6zocjyNN#jyEJCqfz3Ce*Z9|r8&3;<)}upkE0qr!-J9! zjT(cw;>Sn(jTwjmFa|~MWo5zlCx*qI(VKI94)W5(az9AhnDT^d6IZ87Il>hIg{bi5 zdR}0*AZAh)q3b%WtIHp`c{K(4{_!h6?g)`gTx%H{V9N&4DkIbI@#8gy19pBzMU;r? z8j@C_!T?h|67^odv318{=0D1L8{fh|=1EysbEe@XX++aOl_-RP^HKDigi3|fxmJE{ zUy5aOd}GI2`^8=uc^-jZB1jdCoySK80LQ_5$yf7-(RnSczLEVWAHRiGJ^o#V7pw+D zyjB_%IM>DX<{z1v_;jXw!pxFkdW^LFyn?jkx6ZuPve7f7MQkoL!~WnK=}}-+^hD5x7zi#lA%6a&$g4?`SHwj}x-C%cM*9og z5jnkHQ~%m#&-n?>h-kBpy6i&Wz0|+7^R(?=IQ0o%jVDCfhq%g%85kOdz+w<_K*Mhk z4IYTnBJD}YpX$%SO$2MOO4H6PzmP~lp`ydFp5irK#;GT1$Tb~%`GTUNVqmGEg?bEW#*YT0*ok>+DVJ3EHo!zdUQ1V=uF(WWw z`6G;W+uxG6qaW(XupqT4$%7Qp(V*kc*UTn=47Nn2dOdoXOY>5VS+q)+1U|q}z6=U% zJy!!*YmK{lM81FHfmnCKosWp_vX*&gWX5@FS*qS{x6I+>ex+sPdULX?62se`Di-Duq04;|$D|GU z439j@n3Q@pO2cN7SaKjdI}9cUrAES8i2#kB%h$pv^GSQhHkOjoV&f04)0*v9{)C|^}uOtr0 za9iKi%M%+MK&Qfegw}hh$)RSJmB;H-yYzpdzP81ozh=(sK zyC?6i+mQ{+rN=)VeU17o9VH({^Z0tJ=8P5SC&N8HB6V0#HbhVKpj-RyUtCQ_Fme95 z^ob9L#mom((r_=uZYjiX9hMGS0Oi9C$yjQ5siGzcX26U!G-xjGZW&&s)B5_1kO8Cc ztBV0A=3&hb$J11Kz>6@xLKD>2n1Y#Vk=NqFA-Lnf(_`%&#f>G}vme1V=3}?VZ81+> zr}6yE4z!CP@Rp*N=fpi&DdzRG(}0eJ7v}1@0iObWybLZQ z>G0lgv?~+j=U2^||K`UT8z29czXGo87*6jZv{>3h@XiP$=u9Hsici@VnpI=Kx;|fN z8vg+#80BMYzbBm09A_WeBM>jXl$QbyLrGkhBzKNUB%b$gF$NgM9_QNaC7J%Tq8kJzY5MC*s`T@QkM?-3a3OI!9$hOTNozp zrmp{?XMI?|B3YGr&Dpm63OP;SwQERX2;(c z!pm*b^@W2;0`>vKEL^1=&dS@pn@_okgT+@j3DWAur;kE+k-6U7uvFD+AxUceA}a!u z{Hk_Se`&4Dx|8~D)Am97u;JyahI|)r#%9p*%#{E}4Xc(*fHHt6I(fT5P)Jm*Sgi<0 zq%fTvz-#yySZiggR$$6;1lS3g`4gfthZ`XBQB+yV(f49vgd$ajPaMv8{dz0d7zij) zuSrWy{g^nv{jQtG%*zwU0F%c@ikGazGmynIsC))3gK|0M0$aTwol+t(9UosQ`!bBqsTdd=-utKTwSHjLwHlzLk)vOvX*H)eZj#@?n|5B)Ai;+V zqVdYc-y|Cwy;PK}hVUFZ13rFkVql3)Of10hTdmK;E6X!nyyyuNPMC81vp7@h#XFa* zo3kEun60yCZihB{c?-LbK!sp+W)wL0)nV6B!stVtP_8E4#_PsYu1Tko+oXpx1Gm}t zdt*$eE8gLhm*CZ`sL*_u8Q{&YnvF)MB7el{ew=z-yY;!l?2&qV?oJk+h$<*6Vht1T z7k>Yxg3XE584nx$1NbBCg%H!FE#ucd=IwD zc}f$~B>00Gzo*g5xrc8SntIHE>5%Hr4R@PH^>6x{pyBK1zTA`ay;-4Qvg%8O8Z4nF z*<8M$w1LmWv(l9_?V$A?quI*~oBhG%o#i30%E$5*2^Y8@Br#_25IG!B(=_uH0oGOo zw=^)5(G!I*q!RpeLa32&72{kl|H*t*s9?m$WDquUN}x|!gVcy|>T1FxAWQ|6r!6U# zN@kHQ;Hw!ykG`J1O#?-sgUkAlVb!4~^UB=6S0G#M?AfQgJ!%HeBFl1K@sd zP~V(8_Mk;0VF!ebLae=?3vbZ@w!3f)U<-s-1b@My zqWcN*&Va8dYy0eO9@)_{To<>}bEb#IuL6!%BpRaZL|(1jVnJKeNb1X%M=o93Nd|zR z7)8X$L6Yh|`i{lgbbWb6MSg>RJ|8%)5Hmdpiol1!J5u42h3Gl-_!gn+m zx;a(-f!8A>dIL*u)R#$GCez)MU(J{(nzDUNOjR>pi@z3C%26tA4dPA9u+gBSfJDw% za^hcs44Vcs&Q?c~=VKM+53#H&kOJKosd}e=qG)k)PKL4&h2>!}{@*PYY43K$xO3Co zpBL7dAD})ThL|2`?orT018YwslS)~+1j@qx)437wnR(3~x^DGqCV_9Lx|;TzecY~B z+ z9pC#_o$%yydtnCq3KMTK*&|+W@PR{0lQlW9$DIu@MkY>#aBk>~*ybK7Zc~oT! ziHUa`S`Zqt2{;EYvEIfAN&CQyQ@iy9JJl4}eOpCzN^(@+|7*-9>wXBu?rt_WsGvrO zIFIfzQ}$;2UuUBY7}R29*<;*)2UzK1b^@X1F`&npk4H0A69rUO~=t6H9;>>lDM9z~!yd8rye}TWN6HUFSFzV#p_X zt>1(u7Fk26uN*LZT7p|MFEQeNw^%FPKj8{*+a0j)ydVsx-m_VMBLA2H=pr!|pXYKm z1ugf+tfw|bQ3flBb_?lazb%BBjgBI`PY4IS@{!@AzriqCCcKgR%34CdsQL=h2fgsd zE5BfOb&Lk7QPc4s1lwn=ENid zDj~Yd%D$~o8=N-xn`&16%G_dNTX5xXzN7X~c*o()9kE8cniydQ8;$kLcEV6?ofu$E zg!NwNuDolISf|MD>v1bSr+>62N{R)%05VBLMl2kR(L6zs0s{Wl};+nx{RcEdy5NZ zXzjzkr-bRr-_04ChZ#Q2uQ`_b}fu2t0hcR;E(ET_XP>^cm8J)T}g5uDqQe){>D z=3#16Qxj5=i0T`=gH+z&mPpT4Y?$%SR@ZT0pOEo&x52%ONzO89w}*aQnbBc~Tw^y5X zTcNvMlvuxgh>{YgWbWV&13G>5{P_n~Zn%;S{#l2yv#!0>{B{VyiL(^Ie#-0me-#ow zudq6GTQU_qJr)d;W7FX>@&|p1^_Mri+*cUMzP%{&2%;S!Hkj`TTw2B;3Z$8kA3!Z6 zLj@wKMj`Qtx%&~=9;7h9EDZ4}#21ys=wJ;ZC)y+_x!&>T0pS7qv#l1$>Abbg+WYwP zi&P<|nW*`>2Ao-cX6IBkEMMhQ(h;yJ3v(f%%a)H|h79iNj>Dqdv6I27@R(K*MoC7wM;0^fe5C z@qxzZpYackd(JhY!4vLxB$DV5=x0w8zHhFfe==G65y&$)Hn^st$3a3e0sF6JODG1e zdbd?J#SeOgKT1^Qy(AWCDrX@ADw#WJ`k3$LOU=S#gC{pi3}McAOhwn;*4O;MVieaJE#7OV!ybCRdLQZ!xGHH zlVi;jbYvGXfkPZmDP9SZ&US^PF8U8HtFI8kl1pEhmf@25?+-(V#6zczNP1aT4KugG zMad|2$3KrPQb)&5`2Wju0Y^ErikjLxv>~RPu;C&+yxL#kFuu{t9UOx$I0BB$_{Gw&Z5F$0!5Q3Lr{ctH^y!0f`7J|ydV0U0NcoTnbg{zLd z3O>@`vx$Vrpuj*>gO!?h%azIJ6NS=%h-eWsB_q8Dgg?WrsHS1kiX3RS)znYCI}Fm4*Cx&Px) zL}R+q8of0>-cZ)XzIefKQf7kCsoDDWoL>V}Le1a-1_H*YwtL?(q*c^LM=ZR^M3lSehc2!x8z z7He}6-F?BoT--6DTi0PFosn8}OjVAy%wp&`ijE5L5b06KEJ!pAbqLB_lx)ody*up7 z4>sxf;)AtNrLOhgK&Bk!qyO&d$`!nQ?@I(XZ3TROaHktl z!u)-XjP>*gc(iTF*f%uLuM=@2KX2V1^u!gQwtN6IJ)W>kZIOHuay~n7tB5 z8@TCVcDGjhS2le`2GsU5iRXxMEU6v=-p@_6!V(v2NPYsNGWVL}HTfn|XZOasJgqko zX?}km1KF*2%Do%&vINiD6qyv}{%C%H!w$pxEm>I$x`d{SfrD~14HP8?o;_SAcHWEM zv$8sGLqJvGFF%0DMmrT6>d4zDKz=emKXE~T_dDik;P3R^%YT8Um%6X=2g|I2!qD}k zUlxsl3Km?ME<>tbW(I3~I)$~GA1iTsG*oBquvZ_er_(^CV*`c2rh;xyaq!3Z!PJfo zzJ*i0QlN3IvBjmJiQ4u;H#;zIG-Bj%OcAOC%u5xKt^}vk@_owO+$_y2_YhvnuXebo z+IV{JjU25dJ$U)%#fm`zi!N1O^N?r| zvfAM9NU6E8+xh0LTgS__TD<-LTqg)g0LC=SUDqfmuAwSuF=#n(i^<>5;GjNv{far~kL+$VH=*c%Phgg(E)ek|vU4nDF)= z@|ZmUE(D1MMj=4I!LR|_aRU;|CP$0CE7P&QCq>Gec<-LWT;E*kz=8Xus9;G3kV?LW zFg;~H=!xL4Rmv;fVvTZaza2r$(pRdC^N10cAj@sZBHdW-x@_r>E3|X3@`+zdGUezG zY>Vw|M3YrFiRmZ(fsNe#=A@3oSFGbwuN+kKNOTvT=Niw+>P#5%F8lxgj4`f=uym~P zO1xC12>~AG}*s%CS^FAZk8b!jTXC z|J=fokgo1`$wjOMA`B8*Fy=5Q@Wwn~)@=5w{~E{6>l>?nzi@7oS`R!FPE= zj<}_tyUmBI6Y5CfLc2`n!PCaXv%5}vXUxRlQ0GQx{pl<(o>I{NmO275EBu47yaq)|A#zcCW_j*ySe1q{n~{XLEd z&~st|rd^LlAmIuLTmuOUI5`jeG7ol-{VvZo`90;@StG zdEEGz@K_*YAz+}W-9bLAgUba7RU}*on-65ljQP@}ER3&J5ux6KeOBbsT?huS0gxSzoQU57P>JPKrybxI)| z?=U|Yg#>5CRcq*aAdDa&T^(R*3UZaUV^MV6qcxI{I(Nm6)A9H&?kn5=_vSyvoAV0O zRhUATqFea$2V{osA3tV|E)6Ncg%1_r<+Z28799{aj=NImdUR|D;X;EVO7cMQ&B0%N zs*&{HJ*|gaJje(HkfO%am&nYN&5x>&Jm1qLP-Z5>7uB_}J+ABOKqDg@QBp3|-!*0t zGI$H@+JrtFW)#p(rvtkvzG1b`moR=Ig4l;zAg;=H$R{V zdYEf%lNKgPbHX`0suTMZCF`TtTv=FII*^Z=y%!9 z5C-_rm14!IE#2`F1ZnzVs&4zfrsf!=To?fhqxwNR(!v4QDW#DSF-pX7J1ya7Izaoa zg{~7vkPT41asyM9(SM6mfH@?o<&nF`;9Hvb;{X~WT(5^=?XTNw$q|ZRG=8WjdmHU4 z-3Sp3G$!;M>!G}5F@5_YA;C>gsDa71)M&27{6Nd&hOcrA6k?SYSwr=}mc!#F3F;_r zfd3LB2V_x{0SAIqeFeq_Xr~w6X)KPtxlz(KM32 zkUR{{V71gaxZK=WilX+w5BJ0Fo^e)GP}pSoW|<7#-}Bv#1bYz2V-TVQh7*utg((e+ zR{;OcG7gp?1I1#{WjZ6iq8zvE@Ks^v*I|6Qc-ovFaiI7xp>roE%fIJwS|DM|uhb~C z;ajHDm-CtzP%RKMgwNWc*cPv0K5YvN7raN9AyQ|zLxo7DOlSQLKJkL4n?Z#!R!5Ph>q>n$GfY$8wbcW+z`6Ov~vO7p98s5N-)KMT%lv`WFi3 zaZ=Q5j`$?)(37$=yeLd|J}!f?jZU)A?p4bOCR3_RAvT73lHx9Ype91IXCe)}h0}e6 z4x5{f^7_YP3lbbb>jKuemgMVVCNpQ1iY0UYZ_hJ%^Owd!Dj5+iig7_JWINW^n5hh# zd-4Qw8n^Dkgr^~!mBQgZB9CsrsmCSM3|NW2QyX964mJ?ev3YN^Z6N>)p7g)w#V{Wx zbzDO!`Csyddi=`4t<41--ADlq#2J#;#;%K$RVgW5DwBGeLE$TS=lRvvAm9Zet7FF4 z2gHV<_3>I4MbH9?F?%}LnPBgUhc#8e441bSc?eTK|KRkW{@)M5;Y|9xvd&Y8n6`(EL1ui?K*MSY-KEC_ zL>$W)#ivcIu|x&`9lzX^5*!~4oyR|&f+^pI<+ztImxH#-~E!*>>55j>Y*7GM+X+F+A}Z_iP)Kz+u+)Tyv!iVv?!9jd@e8Ijg2V0Z!-}PImivNS8 z-qMvp+=YHLLh8cel-FX8$%m+}P$v*&%8GXN<9)G(oTPcahphz_79FYH$d`eU$Rh|} zcdk}Mv>@)OyzL5`meX~3OhuVnVh(}3iKF&`o*C`|;%o8n$g>h~mgo<_IO$6D|K5ra ztT0T8s~t-na~k7X#};Oriu11R``rqjBcCy5Qd~u@a{I&cm+)-^1a zmhSXfP5c{hg={OsYhTV2UuLBW-YLRm1BAkI=N+OVhzCbHs;`TLUz&~!x;eNHL$NFw zWESF>D^V4lOaW(=L=+NF3HUe9x&RO(Zz5hx_d`-}Lh}8ujP5=lzd;y$^X;jZm1_XIPbNNk(idSbO4N+B2=V=<&gN?HqX>zcng4WRPDG)bN8k` zT&?hM9l^w+3pF%+8^g?FfM0b&6|f7|oR0)lAjbWB4OFV&8USQ=f4MH$P&dGjOp7uD zVhWxdVdI^f+z*4%a@>riHR!r z+nUKb!weJ+d_;}AwB7gRc)W1My@kjgfM?PP*4Xh9$ zRnl-SEHajtr^6M=KtWC_%)F8{Lr#8#B5#uwtRaEh)&K03(pAcWNJFruniDkv^csSv z72^+XMfxkDUSnjN?HmNQFKyB=$C`b){9zoQ?&6oZW5sU#SHy<_oPk#XFMApt7j70{ zQX~Jm+~L9CvI6TDg6ISyQ5&d8XoN@p$um5o7-{<|#@%f*Ox1|b^bt_j{2N&~Gc`5X zym3jq%ATE~{SGzJ@AumS{97ddTWMuPHtoQi*N4l$JRkCCIAE`YW_t8^p|a8?WC~+6 zJU2Mq{qV2ES-}`5k29QjJnV}MJ!jtSs<`$A)5sgB#nqYp2kW1&1!e6HxL`RU>|3_n z0-PNZ*@9ZA3+z#G5(orFxSm7J!IVo^n3-1a{O@U(8wnHZd?4$;wNSA^CFH^8A72tF z;jj}G{xRc8y5nXz{Ux(IKtTWu{$PuNna$BnSS0z&E_`lPC^+=QPzN_ z>paSh{Y-okaP_*myK{4U{jWeKXHZ1M%0dGnmwkY6FyF%jpY9>+j4F6?)~~-Ys5A{2 z6uOeSLqJwj(0gd#TxUWtAj`GHGWZS@==1<(3sN5$xSm%Rksr@gBcmuZTO zLYR@VC1yY+VGuZbPRu|ep0kRuJzjh=O=|MF+h{ELviN5*)|H^nR4c~gVh0a?!)^kh zkW)Ge_TC-4A1CK%E&aTIkJkOX3iTrQu#ma0d|RVZsg?Z-e4)GB`tOiW9GH^FG`Yt{>29gGaIn~B{iPRlrGBmkD-NeT!y zJ8cTR+6@KgW-D+7xOVI)O_9hyF1VEy1tmV7%F_c6fo%T+##NkEGxY()DX2u3ev9q@ z-Q@igytJd}0ae4xLBm4Bh=zy<7lw9?Jg`E<*Cyuf5eA;5xM zyi(j;GS-JS?ncaCG4C}wL{Zv-5tGyGwUO!Cx(|P0m@5^S_K>@RXfT$^0_cIv*r(3i zL^w>En?>0&W%U^}MTk6IL((6A|EroKO2%>+l$;h8fs6_jiIt?SIM}C9B?Xp)Uc<}y z619+;*3(^wmoCY6v!Q6vzIk2tVP1fAhQTLl2H(_$_X`TD*SEE3!X|nY#9kUT^6}%p z5tb&!PdXxiuYfWT1R7jmxscv#Z=BjsLE)i$%*u57e|Pp3GkD=ymOVzrKvo8C6ILde zTdO~`v7tfP=US7V10x(*nm%4g*Rq8y6PW*YbT5!yDglXq{P;1^THUy*pF5ZeyD88t zh&B`81mb(Y^0TLd&=iajBEUrT1D>5F1Sx<}{%;}NpnmB6?Li0(NtPxWByRlV$rGs> zCZN`0SHltD zx<>))lp`K?-xk$KgD`c4Ar@$^zsOyJBFaQV zN*ZnjOB$MBfJ_E5e%W!^*_xKBGR8d|nZKroQgQmgG)==k8a08lyCwHuh5)|z>1{ig ziUB^geGnC4w!5t{v{t{s`LxKEzNY`f)R%x$y|&%&N=1aWQ<+7E1{EdASjdzjbt-eF zkT#hmQ<5Pv7L_q+I+-$TR7ePEE{UzMg)*y5nf~i>&ilW<_d3`2y+g70@AnM%z1F(d z`T}@J^UK}G7?FfWMN@w-VMjoL-Zb36jfD)QEfctb1{gXR4{U9zL|;opXgJ|%HgNTY z^yNvNJ0D1H=#uvt$K$^ueT=fI{HnN;jWw)kWe5G6%tG*buS6jmzZnBmEA|l$#|_uvwM6&2LJ6 z)gc+Hl?&ZurhFz0>_D(*cI?BqR-OHQ7?JG~L0Ia2fLP-n;tec2A$g4drQ91{PA;xG zP~U&WmX&V8SQo%jv7ej&`)t7}x1R4rLuQtCV9{#*MY_`i^+?-cu@%n2X|+()Kzj)7 z9a~{^`F^K(!PHl%qYgd5ZW|@ivp7W!kq`>xX`Fm1RbLhY7V1o`wedx?1g5!vr3${;7X=w04 z8R_P)Na)5P>rL4X8Ek1o6Q-5vV6w?cHVmzu>St=m7|^ZS;H+#E*?qeBAo!JYfx=@PPA7lGNA zL68@ECdR*gp%5r=TwNa@?XlN6`uE=vbRH^o#>?5BWYPqA@D=BMo)4t3-sn-))Exh> zo;3{+K=xxBao zzfK>tL|wg{a!7j^_Q{jKQ}Co$u>EFPC{Psn(Un2Bf(r_hI=nbm;sS&<6m(itieH0 z#G`chOjZ=iv;KWX$vodf<+X0TOJrkR$O&hZrFsJC=mJSrNMmf1osgXV6KDR&1FDko zmZ|V?<=X$SC6U5Uk*9^D^!4-*pJ6Q%-z%{a6qeMJPJjqg_5BlW!qjYxf+(7YU4FYE#aswn6BWrV?6zg^}K5uSYUQ~H97O#kT{Ql?FzsE=SRC%sl`)N%~ z;|glp-v

  • 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 literal 0 HcmV?d00001 diff --git a/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs b/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs index dc73b38a2..baede5e6c 100644 --- a/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs +++ b/languages/tree-sitter-stack-graphs-ruby/rust/lib.rs @@ -32,7 +32,7 @@ pub fn language_configuration(cancellation_flag: &dyn CancellationFlag) -> Langu pub fn try_language_configuration( cancellation_flag: &dyn CancellationFlag, ) -> Result { - LanguageConfiguration::from_sources( + let mut lc = LanguageConfiguration::from_sources( tree_sitter_ruby::language(), Some(String::from("source.rb")), None, @@ -46,5 +46,21 @@ pub fn try_language_configuration( Some(STACK_GRAPHS_BUILTINS_CONFIG), FileAnalyzers::new(), cancellation_flag, - ) + )?; + lc.sgl.functions_mut().add("uuid".into(), UUID); + Ok(lc) +} + +struct UUID; + +impl tree_sitter_graph::functions::Function for UUID { + fn call( + &self, + _graph: &mut tree_sitter_graph::graph::Graph, + _source: &str, + parameters: &mut dyn tree_sitter_graph::functions::Parameters, + ) -> Result { + parameters.finish()?; + Ok(uuid::Uuid::new_v4().to_string().into()) + } } diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index ee13ffb80..7a388ae49 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -120,16 +120,52 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @name.ref -> @class.lexical_scope } -(class body:(_)@body) { +(class)@class { + node @class.instance +} + +(class name:(_)@name)@class { node dot attr (dot) pop_symbol = "." node def attr (def) pop_symbol = "new" - edge @body.static_defs -> dot + edge @name.def_value -> dot edge dot -> def - edge def -> @body.instance_defs + edge def -> @class.instance +} + +(class body:(_)@body)@class { + edge @class.instance -> @body.instance_defs +} + +(class name:(_)@name)@class { + let nonce = (uuid) + + node refine_in + attr (refine_in) pop_scoped_symbol = "" + ; + node push_nonce + attr (push_nonce) push_symbol = nonce + ; + node using + attr (using) push_symbol = "" + ; + edge @class.instance -> refine_in + edge refine_in -> push_nonce + edge push_nonce -> using + edge using -> JUMP_TO_SCOPE_NODE + + node refine + attr (refine) pop_scoped_symbol = "" + ; + node pop_nonce + attr (pop_nonce) pop_symbol = nonce + ; + edge @name.def_value -> refine + edge refine -> pop_nonce + edge pop_nonce -> JUMP_TO_SCOPE_NODE } [ @@ -235,6 +271,22 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge @recv.lexical_scope -> @call.lexical_scope } +(call receiver:(_)@recv method:(_)@mthd_name)@call { + node dot + attr (dot) push_symbol = "." + + node refine_scope + attr (refine_scope) is_endpoint + edge refine_scope -> @call.lexical_scope + + node refine_in + attr (refine_in) push_scoped_symbol = "", scope = refine_scope + + edge @mthd_name.ref -> dot + edge dot -> refine_in + edge refine_in -> @recv.value +} + (method name:(_)@name)@method { node dot attr (dot) pop_symbol = "." @@ -246,6 +298,23 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge dot -> def } +;; refine +(call method:(_)@refine arguments:(argument_list (_)@name) block:(do_block body:(_)@body))@call { +if (eq "refine" (source-text @refine)) { + node refine_scope + attr (refine_scope) is_endpoint + + node refine + attr (refine) push_scoped_symbol = "", scope = refine_scope + + edge @call.static_defs -> refine + edge refine -> @name.ref_value + edge @name.ref -> @call.lexical_scope + + edge refine_scope -> @body.instance_defs +} +} + (singleton_method name:(_)@name)@method { node dot attr (dot) pop_symbol = "." @@ -257,6 +326,18 @@ attribute node_symbol = node => symbol = (source-text node), source_n edge dot -> def } +;; using +(call method:(_)@using arguments:(argument_list (_)@name))@call { +if (eq "using" (source-text @using)) { + node using + attr (using) pop_symbol = "" + + edge @call.local_defs -> using + edge using -> @name.ref_value + edge @name.ref -> @call.lexical_scope +} +} + ;; Identifiers ;; ^^^^^^^^^^^ diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-class.rb b/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-class.rb new file mode 100644 index 000000000..5dc14ba52 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-class.rb @@ -0,0 +1,23 @@ +class C +end + + C.new.foo +# ^ defined: 1 +# ^ defined: + +module M + refine C do + def foo + end + end +end + + C.new.foo +# ^ defined: 1 +# ^ defined: + +using M + + C.new.foo +# ^ defined: 1 +# ^ defined: 10 From a7c61a45f302b972f83bb6913b550af3b064c4f3 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Tue, 23 May 2023 15:23:04 +0200 Subject: [PATCH 35/38] Prefer local definitions over surrounding context Adds precedence attributes to prefer local definitions (inside a module or class body) over definitions from the surrounding context. It also makes nested class or module definitions available in the lexical scope of the containing class or module body, so they can be referred to unqualified. --- .../src/stack-graphs.tsg | 4 ++++ .../refer-to-local-class-unqualified.rb | 22 +++++++++++++++++++ .../refer-to-local-qualified-class.rb | 22 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-class-unqualified.rb create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-qualified-class.rb diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 7a388ae49..0a7a6fa3a 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -66,6 +66,9 @@ attribute node_symbol = node => symbol = (source-text node), source_n node @body.lexical_scope node @body.root_defs node @body.static_defs + + edge @body.lexical_scope -> @body.static_defs + attr (@body.lexical_scope -> @body.static_defs) precedence = 1 } [ @@ -91,6 +94,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n ] { edge @right.lexical_scope -> @left.lexical_scope edge @right.lexical_scope -> @left.local_defs + attr (@right.lexical_scope -> @left.local_defs) precedence = 1 } ;; Statements diff --git a/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-class-unqualified.rb b/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-class-unqualified.rb new file mode 100644 index 000000000..844c4c0c2 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-class-unqualified.rb @@ -0,0 +1,22 @@ +class C +end + +module M + class C + def foo + end + end + + C.new.foo + # ^ defined: 5 + # ^ defined: 6 +end + + M::C.new.foo +# ^ defined: 4 +# ^ defined: 5 +# ^ defined: 6 + + C.new.foo +# ^ defined: 1 +# ^ defined: diff --git a/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-qualified-class.rb b/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-qualified-class.rb new file mode 100644 index 000000000..b9a9d99aa --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/statements/refer-to-local-qualified-class.rb @@ -0,0 +1,22 @@ +class N::C +end + +module M + class N::C + def foo + end + end + + N::C.new.foo + # ^ defined: 5 + # ^ defined: 6 +end + + M::N::C.new.foo +# ^ defined: 4 +# ^ defined: 5 +# ^ defined: 6 + + N::C.new.foo +# ^ defined: 1 +# ^ defined: From a347fd18ceb4e4df819072cd05510df5b3048a8e Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Tue, 23 May 2023 17:17:31 +0200 Subject: [PATCH 36/38] Use tree-sitter query predicates instead of conditional statements to test for method nemaes --- .../tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 0a7a6fa3a..7911096e6 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -303,8 +303,7 @@ attribute node_symbol = node => symbol = (source-text node), source_n } ;; refine -(call method:(_)@refine arguments:(argument_list (_)@name) block:(do_block body:(_)@body))@call { -if (eq "refine" (source-text @refine)) { +(call method:(_)@_mthd_name (#eq? @_mthd_name "refine") arguments:(argument_list (_)@name) block:(do_block body:(_)@body))@call { node refine_scope attr (refine_scope) is_endpoint @@ -317,7 +316,6 @@ if (eq "refine" (source-text @refine)) { edge refine_scope -> @body.instance_defs } -} (singleton_method name:(_)@name)@method { node dot @@ -331,8 +329,7 @@ if (eq "refine" (source-text @refine)) { } ;; using -(call method:(_)@using arguments:(argument_list (_)@name))@call { -if (eq "using" (source-text @using)) { +(call method:(_)@_mthd_name (#eq? @_mthd_name "using") arguments:(argument_list (_)@name))@call { node using attr (using) pop_symbol = "" @@ -340,7 +337,6 @@ if (eq "using" (source-text @using)) { edge using -> @name.ref_value edge @name.ref -> @call.lexical_scope } -} ;; Identifiers ;; ^^^^^^^^^^^ From 421806246feda531faf1f3f77c5868e17dd27735 Mon Sep 17 00:00:00 2001 From: Hendrik van Antwerpen Date: Wed, 24 May 2023 11:22:17 +0200 Subject: [PATCH 37/38] Add skipped test that triggers resolution bug --- .../test/classes/refine-inner-class.rb.skip | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 languages/tree-sitter-stack-graphs-ruby/test/classes/refine-inner-class.rb.skip diff --git a/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-inner-class.rb.skip b/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-inner-class.rb.skip new file mode 100644 index 000000000..541bb682b --- /dev/null +++ b/languages/tree-sitter-stack-graphs-ruby/test/classes/refine-inner-class.rb.skip @@ -0,0 +1,28 @@ +class C +end + +module M + class C + end + + refine C do + # ^ defined: 5 + def foo + end + end +end + +using M + + M::C.new.foo +# ^ defined: 4 +# ^ defined: 5 +# ^ defined: 9 + + C.new.foo +# ^ defined: 1 +# ^ defined: +## This assertion is failing because, even though reference C on +## line 8 resolves to definition C on line 5 by itself, it resolves +## to the definition of C on line 1 when resolving the method. This +## is an example of https://github.com/github/stack-graphs/issues/275. From db447f1f7f948f5562c8ee57adb531d40688bbc1 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Wed, 24 May 2023 09:05:22 -0700 Subject: [PATCH 38/38] Prevent path searching within refinement subgraphs when calling context is not refined. An additional "" pop symbol node is added as a guard to prevent path searches from exploring "" subgraphs when not needed (i.e. when the reference context is not using a refinement). Co-authored-by: Hendrik van Antwerpen --- .../src/stack-graphs.tsg | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg index 7911096e6..6a04f3477 100644 --- a/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-ruby/src/stack-graphs.tsg @@ -307,10 +307,14 @@ attribute node_symbol = node => symbol = (source-text node), source_n node refine_scope attr (refine_scope) is_endpoint + node using + attr (using) pop_symbol = "" + node refine attr (refine) push_scoped_symbol = "", scope = refine_scope - edge @call.static_defs -> refine + edge @call.static_defs -> using + edge using -> refine edge refine -> @name.ref_value edge @name.ref -> @call.lexical_scope @@ -330,11 +334,15 @@ attribute node_symbol = node => symbol = (source-text node), source_n ;; using (call method:(_)@_mthd_name (#eq? @_mthd_name "using") arguments:(argument_list (_)@name))@call { - node using - attr (using) pop_symbol = "" + node pop_using + attr (pop_using) pop_symbol = "" + + node push_using + attr (push_using) push_symbol = "" - edge @call.local_defs -> using - edge using -> @name.ref_value + edge @call.local_defs -> pop_using + edge pop_using -> push_using + edge push_using -> @name.ref_value edge @name.ref -> @call.lexical_scope }