Skip to content

Commit

Permalink
Resolve type expressions built-in fields
Browse files Browse the repository at this point in the history
  • Loading branch information
ggiraldez committed Oct 8, 2024
1 parent 0b93991 commit 94ed101
Show file tree
Hide file tree
Showing 12 changed files with 123 additions and 8 deletions.
9 changes: 9 additions & 0 deletions crates/solidity/inputs/language/bindings/rules.msgb
Original file line number Diff line number Diff line change
Expand Up @@ -1830,6 +1830,15 @@ inherit .parent_scope
;; Type expressions
@type_expr [Expression [TypeExpression @type [TypeName]]] {
edge @type.type_ref -> @type_expr.lexical_scope

node typeof
attr (typeof) push_symbol = "@typeof"
node type
attr (type) push_symbol = "%type"

edge @type_expr.output -> typeof
edge typeof -> type
edge type -> @type_expr.lexical_scope
}

;; New expressions
Expand Down
14 changes: 13 additions & 1 deletion crates/solidity/inputs/language/src/definition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6649,6 +6649,18 @@ codegen_language_macros::compile!(Language(
return_type = "bool"
)]
),
BuiltInType(
name = "$type",
fields = [
BuiltInField(definition = "string name"),
BuiltInField(definition = "bytes creationCode"),
BuiltInField(definition = "bytes runtimeCode"),
BuiltInField(definition = "bytes4 interfaceId"),
BuiltInField(definition = "int min"),
BuiltInField(definition = "int max")
],
functions = []
),
BuiltInType(
name = "$txType",
fields = [
Expand All @@ -6657,7 +6669,7 @@ codegen_language_macros::compile!(Language(
],
functions = []
),
BuiltInVariable(definition = "uint now"),
BuiltInVariable(definition = "uint now", enabled = Till("0.7.0")),
BuiltInVariable(definition = "$txType tx")
]
));

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion crates/solidity/outputs/cargo/slang_solidity/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ pub use generated::*;

#[cfg(feature = "__experimental_bindings_api")]
pub fn transform_built_ins_node(node: &generated::cst::Node) -> generated::cst::Node {
use generated::cst::{Edge, Node, NonterminalNode, TerminalNode};
use std::rc::Rc;

use generated::cst::{Edge, Node, NonterminalNode, TerminalNode};

use crate::cst::TerminalKind;

match node {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# This file is generated automatically by infrastructure scripts. Please don't edit by hand.

References and definitions:
╭─[input.sol:1:1]
1 │ contract Test {
│ ──┬─
│ ╰─── def: 1
2 │ uint last_time;
│ ────┬────
│ ╰────── def: 2
3 │ function foo() public {
│ ─┬─
│ ╰─── def: 3
4 │ address origin = tx.origin;
│ ───┬── ─┬ ───┬──
│ ╰──────────────── def: 4
│ │ │
│ ╰───────── ref: built-in
│ │
│ ╰──── ref: built-in
5 │ last_time = now;
│ ────┬──── ─┬─
│ ╰──────────── ref: 2
│ │
│ ╰─── unresolved
6 │ uint price = tx.gasprice;
│ ──┬── ─┬ ────┬───
│ ╰────────────────── def: 5
│ │ │
│ ╰─────────── ref: built-in
│ │
│ ╰───── ref: built-in
───╯
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ References and definitions:
│ ──────┬────── ─┬─
│ ╰───────────── ref: 2
│ │
│ ╰─── unresolved
│ ╰─── ref: built-in
29 │ function getSmallestValue() public pure returns (ActionChoices) {
│ ────────┬─────── ──────┬──────
Expand All @@ -80,5 +80,5 @@ References and definitions:
│ ──────┬────── ─┬─
│ ╰───────────── ref: 2
│ │
│ ╰─── unresolved
│ ╰─── ref: built-in
────╯
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ References and definitions:
│ │ │
│ ╰───────── ref: 1
│ │
│ ╰─── unresolved
│ ╰─── ref: built-in
5 │ Answer first = type(Answer).min;
│ ───┬── ──┬── ───┬── ─┬─
│ ╰───────────────────────────── ref: 2
Expand All @@ -31,5 +31,5 @@ References and definitions:
│ │ │
│ ╰───────── ref: 2
│ │
│ ╰─── unresolved
│ ╰─── ref: built-in
───╯

0 comments on commit 94ed101

Please sign in to comment.