@nomicfoundation/slang
Advanced tools
Changelog
0.19.0
#1156 3a82f06
Thanks @OmarTawfik! - add node.descendants()
and cursor.descendants()
APIs to allow iterating over all descendants of the current node in pre-order traversal.
#1156 3a82f06
Thanks @OmarTawfik! - fix node.children()
and parseOutput.errors()
return types
#1194 7a25d63
Thanks @OmarTawfik! - split parser/Parser.supportedVersions()
into a new utils/LanguageFacts
API, with allVersions()
, earliestVersion()
, and latestVersion()
methods.
#1194 7a25d63
Thanks @OmarTawfik! - expose the BingingGraph
API to allow querying definitions/references between source files.
#1156 3a82f06
Thanks @OmarTawfik! - add cursor.ancestors()
API to allow iterating over all ancestors of the current node, starting with the immediate parent, and moving upwards, ending with the root node.
#1156 3a82f06
Thanks @OmarTawfik! - add cursor.remainingNodes()
API to allow iterating over all the remaining nodes in the current tree, moving in pre-order traversal, until the tree is completed.
#1223 3e85a14
Thanks @OmarTawfik! - split Parser.parse()
API into parse_file_contents()
and parse_nonterminal()
.
#1194 7a25d63
Thanks @OmarTawfik! - add a CompilationBuilder
API to incrementally load and resolve source files and their imports.
#1223 3e85a14
Thanks @OmarTawfik! - rename Query.parse()
to Query.create()
, and provide exact TextRange
for any errors it returns.
#1172 6102886
Thanks @beta-ziliani! - Improved error recovery, where leading trivia are always parsed and included before an erroneous terminal.
#1223 3e85a14
Thanks @OmarTawfik! - add TerminalKindExtensions.is_identifier()
API to distinguish terminals like Solidity's Identifier
and Yul's YulIdentifier
.
#1187 6389361
Thanks @beta-ziliani! - Change ParseOutput
and File.tree
to return a NonTerminal
instead of a Node
.
#1134 cfc62f2
Thanks @OmarTawfik! - remove YulPathComponent
and just use YulIdentifier
instead.
#1138 44a706f
Thanks @OmarTawfik! - add ThisKeyword
and SuperKeyword
to the grammar, instead of parsing them as identifiers.
#1134 cfc62f2
Thanks @OmarTawfik! - unreserve AddressKeyword
, and let it be used for MemberAccessExpression
, StructMember
, etc...
#1154 7b9b478
Thanks @beta-ziliani! - Adding support for deprecated keywords jump
and jumpi
Changelog
0.18.3
a97b27d
Thanks @OmarTawfik! - fix a bug where CST nodes are invalidated after using AST typesChangelog
0.18.2
#1126 e1d9748
Thanks @OmarTawfik! - fix wasm type exports for the npm package
#1122 bbb5323
Thanks @OmarTawfik! - support Solidity 0.8.28
release
Changelog
0.18.1
bdb0ef3
Thanks @OmarTawfik! - fix a minor issue with npm package ESM importsChangelog
0.18.0
#1120 25eef3e
Thanks @OmarTawfik! - migrate NAPI front-end to WASM and ESM
#1120 25eef3e
Thanks @OmarTawfik! - add TerminalKindExtensions.is_valid()
API to distinguish correctly-parsed and erroneous nodes
#1117 be7bb79
Thanks @OmarTawfik! - rename Language
API to Parser
, in preparation for introducing a multi-file compilation API.
#1116 c88f9b5
Thanks @OmarTawfik! - merge language
, parse_error
, parse_output
namespaces into the parser
namespace.
#1115 96df645
Thanks @OmarTawfik! - merge cursor
, kinds
, query
, and text_index
namespaces into the cst
namespace.
#1120 25eef3e
Thanks @OmarTawfik! - unify API methods on TerminalNode
and NonTerminalNode
, and add type assertions and guards to both types
#1120 25eef3e
Thanks @OmarTawfik! - expose edges and edge labels on CST nodes via Node.children()
method. This allows distinguishing between children of the same node based on their label/role in the parent, even if they have the same kind.
#1120 25eef3e
Thanks @OmarTawfik! - add TerminalNode.id
and Nonterminal.id
properties to get a numeric ID that can be used in indexing/comparison at runtime.
#1120 25eef3e
Thanks @OmarTawfik! - add TerminalKindExtensions.is_trivia()
API to distinguish between trivia nodes and other contentful nodes
#1096 15c437c
Thanks @OmarTawfik! - add support for Solidity 0.8.27
.
#1120 25eef3e
Thanks @OmarTawfik! - change Parser::new()
constructor to Parser::create()
static method.
#1097 e17af22
Thanks @OmarTawfik! - Fix the grammar of keywords (blobbasefee
, blobhash
, mcopy
, tload
, tstore
) added in 0.8.24
, as they were actually reserved in 0.8.25
.
Changelog
0.17.0
43b389e
Thanks @OmarTawfik! - Move the Rust CLI into a separate slang_solidity_cli
crate.f749e53
Thanks @AntonyBlakey! - The grammar for VersionExpressionSet
has changed to more accurately model the allowed structure.Changelog
0.16.0
#1030 7e467ce
Thanks @ggiraldez! - Tree Query Language: queries now ignore trivia nodes.
#1030 7e467ce
Thanks @ggiraldez! - Tree Query Language: remove the ellipsis query ...
operator making it implicit, add an adjacency operator .
.
#1015 369ee30
Thanks @OmarTawfik! - upgrade to rust 1.79.0
.
#1052 54c9067
Thanks @ggiraldez! - Tree Query Language: Compute row and column information for query parser errors.
#1048 c408caa
Thanks @OmarTawfik! - support Yul multiple variables declaration
#1047 2b32045
Thanks @OmarTawfik! - inline MemberAccess
enum into the parent MemberAccessExpression
#1062 6b05496
Thanks @OmarTawfik! - fix stack assignments operator =:
.
#1052 54c9067
Thanks @ggiraldez! - Tree Query Language: Improve reporting when an error occurs attempting to parse edge labels or node kinds.
#1037 2a74f91
Thanks @OmarTawfik! - fix ExponentiationExpression
associativity before 0.8.0
Changelog
0.15.0
#975 46b1dde
Thanks @OmarTawfik! - rename QueryResult
to QueryMatch
, and its bindings
to captures
.
#971 be943b7
Thanks @Xanewok! - Rename RuleKind
to NonterminalKind
, TokenKind
to TerminalKind
, and NodeLabel
to EdgeLabel
.
#963 a5593f9
Thanks @Xanewok! - Introduce a Diagnostic
API for compiler errors, warnings etc.
#996 cdc153d
Thanks @OmarTawfik! - add support for version 0.8.26
.
#983 ea31417
Thanks @ggiraldez! - Expose the language root non-terminal kind at Language.rootKind()
.
#965 61b6b06
Thanks @OmarTawfik! - refactor CST building and querying utilities into a separate metaslang_cst
crate.
#997 84ad856
Thanks @OmarTawfik! - Support stack assignments in Yul before 0.5.0
.