Commit Graph

403 Commits

Author SHA1 Message Date
Arthur Baars
ca27785ace Rust: extract files on a per-project basis
This way we have only one "project" database in-memory at a time. This
should avoid running out of memory when analyzing large mono-repos.
2024-10-10 15:53:14 +02:00
Arthur Baars
db28f1b29e Rust: use macro to inject extraction functions for detached properties 2024-10-10 15:53:13 +02:00
Arthur Baars
8372a2e562 Rust: ensure error and token locations are valid
The locations are "clipped" to the ranges of the parent node of a token,
and the root node of the parse tree for errors.
2024-10-10 15:53:12 +02:00
Arthur Baars
58d2c71c20 Rust: load files from disk ourselves
This avoids problems with files containing invalid utf-8 data, which may cause
panic's like:
```
 thread 'main' panicked at external/rules_rust~~_crate~ql~~r~r__ra_ap_salsa-0.0.232/src/input.rs:91:32:
   no value set for CompressedFileTextQuery(FileId(2429))
   stack backtrace:
      0: rust_begin_unwind
                at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:665:5
      1: core::panicking::panic_fmt
                at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/panicking.rs:74:14
      2: <salsa::input::InputStorage<Q> as salsa::plumbing::QueryStorageOps<Q>>::fetch
      3: <DB as ra_ap_base_db::SourceDatabase>::compressed_file_text::__shim
      4: <ra_ap_base_db::FileTextQuery as salsa::plumbing::QueryFunction>::execute
      5: salsa::Cycle::catch
      6: salsa::derived_lru::slot::Slot<Q,MP>::execute
      7: salsa::derived_lru::slot::Slot<Q,MP>::read
      8: <salsa::derived_lru::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::fetch
      9: <DB as ra_ap_base_db::SourceDatabase>::file_text::__shim
     10: <DB as ra_ap_base_db::SourceDatabase>::file_text
     11: <ra_ap_base_db::ParseQuery as salsa::plumbing::QueryFunction>::execute
     12: salsa::Cycle::catch
     13: salsa::derived_lru::slot::Slot<Q,MP>::execute
     14: salsa::derived_lru::slot::Slot<Q,MP>::read
     15: <salsa::derived_lru::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::fetch
     16: <DB as ra_ap_base_db::SourceDatabase>::parse::__shim
     17: <DB as ra_ap_base_db::SourceDatabase>::parse
     18: ra_ap_hir::semantics::SemanticsImpl::parse
     19: single_arch_extractor::main
```
2024-10-10 15:53:11 +02:00
Arthur Baars
f70f8a3536 Rust: fix utf8 test 2024-10-10 15:53:10 +02:00
Arthur Baars
1135bf6bcd Rust: improve QL test script 2024-10-10 15:53:09 +02:00
Arthur Baars
3e877ffaac Rust: do not fail on bad Cargo.toml files 2024-10-10 15:53:08 +02:00
Arthur Baars
ae19b2fd89 Rust: check that TextRanges are for the correct file 2024-10-10 15:53:07 +02:00
Arthur Baars
faa168993c Rust: reduce log output 2024-10-10 15:53:06 +02:00
Arthur Baars
0c10f083cb Rust: set RUST_BACKTRACE=1 2024-10-10 15:53:05 +02:00
Arthur Baars
796da126b8 Rust: update expected output 2024-10-10 15:52:57 +02:00
Arthur Baars
0b3b95ab54 Rust: macro expansion 2024-10-10 15:19:47 +02:00
Arthur Baars
cad2b74137 Rust: integrate Rust Analyzer's Semantic module into extractor 2024-10-10 15:19:46 +02:00
Arthur Baars
6ede20cccc Rust: regenerate code 2024-10-10 15:19:45 +02:00
Arthur Baars
69f0e8bcf7 Rust: add MacroStmts and MacroItems 2024-10-10 15:19:43 +02:00
Arthur Baars
7986fc7036 Rust: avoid double '.' in trap extension 2024-10-10 15:19:42 +02:00
Tom Hvitved
4df9cd88ef Merge pull request #17658 from hvitved/shared/cfg-conditional-splitting
Shared `ConditionalCompletionSplitting` implementation
2024-10-10 13:21:38 +02:00
Cornelius Riemenschneider
6322270926 Merge branch 'main' into criemen/flip-enable-plus 2024-10-10 09:54:16 +02:00
Geoffrey White
25b3d76f71 Merge pull request #17718 from geoffw0/unusedvar4
Rust: Restrict variables to lowercase (for now).
2024-10-10 08:22:52 +01:00
Geoffrey White
09c2f901f4 Merge pull request #17525 from geoffw0/unreachable
Rust: Unreachable code query
2024-10-10 08:22:08 +01:00
Tom Hvitved
6a87eb0c73 Merge pull request #17696 from hvitved/rust/captured-variables
Rust: Account for captured variables
2024-10-09 19:42:03 +02:00
Geoffrey White
719cef8298 Merge branch 'main' into unreachable 2024-10-09 17:06:11 +01:00
Geoffrey White
5ac9c2db74 Rust: Accept variables test change. 2024-10-09 17:00:15 +01:00
Geoffrey White
dfeb35fe1a Rust: Move the restriction to variableDecl. 2024-10-09 16:21:12 +01:00
Geoffrey White
f171eeb229 Rust: Restrict 'unreachable' to nodes intended to be part of the CFG. 2024-10-09 15:37:10 +01:00
Geoffrey White
a66f31d844 Rust: Restrict variables to lowercase (for now). 2024-10-09 15:14:27 +01:00
Tom Hvitved
918e435a48 Merge pull request #17690 from hvitved/rust/ast-consistency-queries
Rust: Add AST consistency queries
2024-10-09 15:54:51 +02:00
Tom Hvitved
04d1c82005 Merge pull request #17689 from hvitved/rust/print-ast
Rust: `PrintAst` improvements
2024-10-09 15:54:30 +02:00
Cornelius Riemenschneider
4c21444dd5 Bazel: Flip --incompatible_use_plus_in_repo_names.
We've hardcoded the tilde in a lot of places :(
This improves performance on Windows and gets us ready for Bazel 8.

We need an upgrade of rules_rust for this to work.
2024-10-09 14:04:05 +02:00
Geoffrey White
f3d727fadc Rust: Correct spurious annotations. 2024-10-09 11:52:24 +01:00
Geoffrey White
fa1c92dbe7 Rust: Another case worth having. 2024-10-09 11:50:29 +01:00
Geoffrey White
7a6eabc8a3 Rust: Additional test cases. 2024-10-09 11:31:44 +01:00
Tom Hvitved
3d95369608 Shared ConditionalSplitting implementation 2024-10-09 11:02:13 +02:00
Tom Hvitved
11016e193c Rust: PrintAst improvements 2024-10-09 10:41:30 +02:00
Geoffrey White
41218fb89f Rust: Test spacing / variable names. 2024-10-09 09:17:24 +01:00
Tom Hvitved
5afd2d5bf0 Rust: Account for captured variables 2024-10-09 10:17:01 +02:00
Tom Hvitved
a3a0c2b269 Rust: Add more variable tests 2024-10-09 10:17:00 +02:00
Tom Hvitved
fcf1b6d6f5 Merge pull request #17657 from hvitved/rust/cfg-conditional-splitting
Rust: Implement `ConditionalCompletionSplitting`
2024-10-08 16:21:14 +02:00
Tom Hvitved
08d6d54961 Rust: Add AST consistency queries 2024-10-08 15:00:38 +02:00
Geoffrey White
70d530a49c Rust: Exclude nodes that aren't part of the CFG. 2024-10-08 13:52:15 +01:00
Geoffrey White
a7dbe29448 Rust: Add parenthesis example to test. 2024-10-08 13:50:17 +01:00
Geoffrey White
7235ba8f91 Rust: Fix test compilation errors. 2024-10-08 13:38:33 +01:00
Geoffrey White
3b1d917c2b Rust: Autoformat. 2024-10-08 13:30:28 +01:00
Tom Hvitved
cb1ca4c75c Update rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2024-10-08 13:41:24 +02:00
Geoffrey White
6bde26d9fd Rust: Switch firstUnreachable to hvitved's suggested implementation. 2024-10-08 12:07:44 +01:00
Geoffrey White
5d7a92cf13 Rust: Add example from discussion. 2024-10-08 12:00:53 +01:00
Geoffrey White
40096ebb62 Rust: More cleanup after merge. 2024-10-08 11:46:45 +01:00
Geoffrey White
9e3f4cd183 Rust: Accept test changes after merging main. 2024-10-08 11:43:31 +01:00
Geoffrey White
483370d5f4 Merge branch 'main' into unreachable 2024-10-08 11:40:03 +01:00
Geoffrey White
f084bb7bcf Rust: A couple of interesting cases with short-circuiting. 2024-10-08 11:38:23 +01:00