Skip to content

Commit

Permalink
haschanges as return from SubtsType
Browse files Browse the repository at this point in the history
  • Loading branch information
xunilrj committed Apr 9, 2024
1 parent 8a9ae0b commit f6ec179
Show file tree
Hide file tree
Showing 29 changed files with 146 additions and 115 deletions.
64 changes: 32 additions & 32 deletions sway-core/src/decl_engine/id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,99 +97,99 @@ impl<T> Into<usize> for DeclId<T> {
}

impl SubstTypes for DeclId<TyFunctionDecl> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyTraitDecl> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyTraitFn> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyImplTrait> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyStructDecl> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyEnumDecl> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
impl SubstTypes for DeclId<TyTypeAliasDecl> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}

impl SubstTypes for DeclId<TyTraitType> {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(self)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(*self, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
12 changes: 6 additions & 6 deletions sway-core/src/decl_engine/ref.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ where
) -> Option<Self> {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(&self.id)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
Some(decl_engine.insert(decl))
} else {
None
Expand Down Expand Up @@ -151,7 +151,7 @@ where
) -> Option<Self> {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(&self.id)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
Some(
decl_engine
.insert(decl)
Expand Down Expand Up @@ -299,14 +299,14 @@ where
DeclEngine: DeclEngineIndex<T>,
T: Named + Spanned + SubstTypes + Clone,
{
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
let decl_engine = engines.de();
let mut decl = (*decl_engine.get(&self.id)).clone();
if decl.subst(type_mapping, engines) {
if decl.subst(type_mapping, engines).has_changes() {
decl_engine.replace(self.id, decl);
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions sway-core/src/language/ty/ast_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ impl DebugWithEngines for TyAstNode {
}

impl SubstTypes for TyAstNode {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
match self.content {
TyAstNodeContent::Declaration(ref mut decl) => decl.subst(type_mapping, engines),
TyAstNodeContent::Expression(ref mut expr) => expr.subst(type_mapping, engines),
TyAstNodeContent::SideEffect(_) | TyAstNodeContent::Error(_, _) => false,
TyAstNodeContent::SideEffect(_) | TyAstNodeContent::Error(_, _) => HasChanges::No,
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion sway-core/src/language/ty/code_block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ impl HashWithEngines for TyCodeBlock {
}

impl SubstTypes for TyCodeBlock {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
self.contents.subst(type_mapping, engines)
}
}
Expand Down
2 changes: 1 addition & 1 deletion sway-core/src/language/ty/declaration/constant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ impl Spanned for TyConstantDecl {
}

impl SubstTypes for TyConstantDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.return_type.subst(type_mapping, engines);
self.type_ascription.subst(type_mapping, engines);
Expand Down
4 changes: 2 additions & 2 deletions sway-core/src/language/ty/declaration/declaration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ impl HashWithEngines for TyDecl {
}

impl SubstTypes for TyDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
match self {
TyDecl::VariableDecl(ref mut var_decl) => var_decl.subst(type_mapping, engines),
TyDecl::FunctionDecl(FunctionDecl {
Expand Down Expand Up @@ -328,7 +328,7 @@ impl SubstTypes for TyDecl {
| TyDecl::ConstantDecl(_)
| TyDecl::StorageDecl(_)
| TyDecl::GenericTypeForFunctionScope(_)
| TyDecl::ErrorRecovery(..) => false,
| TyDecl::ErrorRecovery(..) => HasChanges::No,
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions sway-core/src/language/ty/declaration/enum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ impl HashWithEngines for TyEnumDecl {
}

impl SubstTypes for TyEnumDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.variants.subst(type_mapping, engines);
self.type_parameters.subst(type_mapping, engines);
Expand Down Expand Up @@ -172,7 +172,7 @@ impl OrdWithEngines for TyEnumVariant {
}

impl SubstTypes for TyEnumVariant {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
self.type_argument.subst_inner(type_mapping, engines)
}
}
4 changes: 2 additions & 2 deletions sway-core/src/language/ty/declaration/function.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ impl HashWithEngines for TyFunctionDecl {
}

impl SubstTypes for TyFunctionDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.type_parameters.subst(type_mapping, engines);
self.parameters.subst(type_mapping, engines);
Expand Down Expand Up @@ -522,7 +522,7 @@ impl HashWithEngines for TyFunctionParameter {
}

impl SubstTypes for TyFunctionParameter {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
self.type_argument.type_id.subst(type_mapping, engines)
}
}
Expand Down
2 changes: 1 addition & 1 deletion sway-core/src/language/ty/declaration/impl_trait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ impl HashWithEngines for TyImplTrait {
}

impl SubstTypes for TyImplTrait {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.impl_type_parameters.subst(type_mapping, engines);
self.implementing_for.subst_inner(type_mapping, engines);
Expand Down
4 changes: 2 additions & 2 deletions sway-core/src/language/ty/declaration/struct.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ impl HashWithEngines for TyStructDecl {
}

impl SubstTypes for TyStructDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.fields.subst(type_mapping, engines);
self.type_parameters.subst(type_mapping, engines);
Expand Down Expand Up @@ -273,7 +273,7 @@ impl OrdWithEngines for TyStructField {
}

impl SubstTypes for TyStructField {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
self.type_argument.subst_inner(type_mapping, engines)
}
}
36 changes: 18 additions & 18 deletions sway-core/src/language/ty/declaration/trait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -269,53 +269,53 @@ impl Spanned for TyTraitItem {
}

impl SubstTypes for TyTraitDecl {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.type_parameters.subst(type_mapping, engines);
self.interface_surface
.iter_mut()
.fold(false, |has_changes, item| match item {
.fold(HasChanges::No, |has_changes, item| match item {
TyTraitInterfaceItem::TraitFn(item_ref) => {
if let Some(new_item_ref) = item_ref
.clone()
.subst_types_and_insert_new_with_parent(type_mapping, engines) {
item_ref.replace_id(*new_item_ref.id());
true
HasChanges::Yes
} else{
false
HasChanges::No
}
}
TyTraitInterfaceItem::Constant(decl_ref) => {
if let Some(new_decl_ref) = decl_ref
.clone()
.subst_types_and_insert_new(type_mapping, engines) {
decl_ref.replace_id(*new_decl_ref.id());
true
HasChanges::Yes
} else{
false
HasChanges::No
}
}
TyTraitInterfaceItem::Type(decl_ref) => {
if let Some(new_decl_ref) = decl_ref
.clone()
.subst_types_and_insert_new(type_mapping, engines) {
decl_ref.replace_id(*new_decl_ref.id());
true
HasChanges::Yes
} else{
false
HasChanges::No
}
}
} || has_changes);
self.items.iter_mut().fold(false, |has_changes, item| match item {
} | has_changes);
self.items.iter_mut().fold(HasChanges::No, |has_changes, item| match item {
TyTraitItem::Fn(item_ref) => {
if let Some(new_item_ref) = item_ref
.clone()
.subst_types_and_insert_new_with_parent(type_mapping, engines)
{
item_ref.replace_id(*new_item_ref.id());
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
TyTraitItem::Constant(item_ref) => {
Expand All @@ -324,9 +324,9 @@ impl SubstTypes for TyTraitDecl {
.subst_types_and_insert_new_with_parent(type_mapping, engines)
{
item_ref.replace_id(*new_decl_ref.id());
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
TyTraitItem::Type(item_ref) => {
Expand All @@ -335,18 +335,18 @@ impl SubstTypes for TyTraitDecl {
.subst_types_and_insert_new_with_parent(type_mapping, engines)
{
item_ref.replace_id(*new_decl_ref.id());
true
HasChanges::Yes
} else {
false
HasChanges::No
}
}
} || has_changes);
} | has_changes);
}
}
}

impl SubstTypes for TyTraitItem {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
match self {
TyTraitItem::Fn(fn_decl) => fn_decl.subst(type_mapping, engines),
TyTraitItem::Constant(const_decl) => const_decl.subst(type_mapping, engines),
Expand Down
2 changes: 1 addition & 1 deletion sway-core/src/language/ty/declaration/trait_fn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ impl HashWithEngines for TyTraitFn {
}

impl SubstTypes for TyTraitFn {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> bool {
fn subst_inner(&mut self, type_mapping: &TypeSubstMap, engines: &Engines) -> HasChanges {
has_changes! {
self.parameters.subst(type_mapping, engines);
self.return_type.subst(type_mapping, engines);
Expand Down
Loading

0 comments on commit f6ec179

Please sign in to comment.