diff --git a/compiler/noirc_frontend/src/elaborator/expressions.rs b/compiler/noirc_frontend/src/elaborator/expressions.rs index b33bca33225..d0010ee3a35 100644 --- a/compiler/noirc_frontend/src/elaborator/expressions.rs +++ b/compiler/noirc_frontend/src/elaborator/expressions.rs @@ -15,9 +15,9 @@ use crate::{ hir_def::{ expr::{ HirArrayLiteral, HirBinaryOp, HirBlockExpression, HirCallExpression, HirCastExpression, - HirConstructorExpression, HirIdent, HirIfExpression, HirIndexExpression, - HirInfixExpression, HirLambda, HirMemberAccess, HirMethodCallExpression, - HirMethodReference, HirPrefixExpression, + HirConstructorExpression, HirIfExpression, HirIndexExpression, HirInfixExpression, + HirLambda, HirMemberAccess, HirMethodCallExpression, HirMethodReference, + HirPrefixExpression, }, traits::TraitConstraint, }, diff --git a/compiler/noirc_frontend/src/elaborator/mod.rs b/compiler/noirc_frontend/src/elaborator/mod.rs index e1882f17c24..52432213c81 100644 --- a/compiler/noirc_frontend/src/elaborator/mod.rs +++ b/compiler/noirc_frontend/src/elaborator/mod.rs @@ -1,19 +1,15 @@ -#![allow(unused)] use std::{ - collections::{BTreeMap, BTreeSet, HashMap}, + collections::{BTreeMap, BTreeSet}, rc::Rc, }; use crate::{ - ast::{ - ArrayLiteral, ConstructorExpression, FunctionKind, IfExpression, InfixExpression, Lambda, - TraitItem, UnresolvedTraitConstraint, UnresolvedTypeExpression, - }, + ast::{FunctionKind, UnresolvedTraitConstraint}, hir::{ def_collector::{ dc_crate::{ filter_literal_globals, CompilationError, ImplMap, UnresolvedGlobal, - UnresolvedStruct, UnresolvedTrait, UnresolvedTypeAlias, + UnresolvedStruct, UnresolvedTypeAlias, }, errors::DuplicateType, }, @@ -21,39 +17,21 @@ use crate::{ scope::ScopeForest as GenericScopeForest, type_check::TypeCheckError, }, - hir_def::{ - expr::{ - HirArrayLiteral, HirBinaryOp, HirBlockExpression, HirCallExpression, HirCastExpression, - HirConstructorExpression, HirIdent, HirIfExpression, HirIndexExpression, - HirInfixExpression, HirLambda, HirMemberAccess, HirMethodCallExpression, - HirMethodReference, HirPrefixExpression, - }, - function::Parameters, - stmt::HirLetStatement, - traits::TraitConstraint, - }, + hir_def::{expr::HirIdent, function::Parameters, traits::TraitConstraint}, macros_api::{ - BlockExpression, CallExpression, CastExpression, Expression, ExpressionKind, HirExpression, - HirLiteral, HirStatement, Ident, IndexExpression, Literal, MemberAccessExpression, - MethodCallExpression, NodeInterner, NoirFunction, NoirStruct, Pattern, PrefixExpression, - SecondaryAttribute, Statement, StatementKind, StructId, + Ident, NodeInterner, NoirFunction, NoirStruct, Pattern, SecondaryAttribute, StructId, }, - node_interner::{DefinitionKind, DependencyId, ExprId, FuncId, StmtId, TraitId, TypeAliasId}, - Shared, StructType, Type, TypeVariable, + node_interner::{DefinitionKind, DependencyId, ExprId, FuncId, TraitId, TypeAliasId}, + Shared, Type, TypeVariable, }; use crate::{ ast::{TraitBound, UnresolvedGenerics}, graph::CrateId, hir::{ - def_collector::{ - dc_crate::{CollectedItems, DefCollector}, - errors::DefCollectorErrorKind, - }, + def_collector::{dc_crate::CollectedItems, errors::DefCollectorErrorKind}, def_map::{LocalModuleId, ModuleDefId, ModuleId, MAIN_FUNCTION}, resolution::{ - errors::PubPosition, - import::{PathResolution, PathResolutionError}, - path_resolver::StandardPathResolver, + errors::PubPosition, import::PathResolution, path_resolver::StandardPathResolver, }, Context, }, @@ -81,9 +59,7 @@ mod types; use fm::FileId; use iter_extended::vecmap; -use noirc_arena::Index; use noirc_errors::{Location, Span}; -use regex::Regex; use rustc_hash::FxHashSet as HashSet; /// ResolverMetas are tagged onto each definition to track how many times they are used @@ -863,6 +839,8 @@ impl<'context> Elaborator<'context> { module: LocalModuleId, impls: Vec<(Vec, Span, UnresolvedFunctions)>, ) { + self.local_module = module; + for (generics, _, functions) in impls { self.file = functions.file_id; let old_generics_length = self.generics.len(); @@ -913,7 +891,7 @@ impl<'context> Elaborator<'context> { self.self_type = Some(self_type.clone()); self.current_trait_impl = trait_impl.impl_id; - let mut methods = trait_impl.methods.function_ids(); + let methods = trait_impl.methods.function_ids(); self.elaborate_functions(trait_impl.methods); @@ -1284,7 +1262,6 @@ impl<'context> Elaborator<'context> { self.local_module = trait_impl.module_id; let unresolved_type = &trait_impl.object_type; - let self_type_span = unresolved_type.span; let old_generics_length = self.generics.len(); self.add_generics(&trait_impl.generics); diff --git a/compiler/noirc_frontend/src/elaborator/scope.rs b/compiler/noirc_frontend/src/elaborator/scope.rs index cf10dbbc2b2..6ae43bd3c49 100644 --- a/compiler/noirc_frontend/src/elaborator/scope.rs +++ b/compiler/noirc_frontend/src/elaborator/scope.rs @@ -1,8 +1,6 @@ use noirc_errors::Spanned; -use rustc_hash::FxHashMap as HashMap; use crate::ast::ERROR_IDENT; -use crate::hir::comptime::Value; use crate::hir::def_map::{LocalModuleId, ModuleId}; use crate::hir::resolution::path_resolver::{PathResolver, StandardPathResolver}; use crate::hir::resolution::resolver::SELF_TYPE_NAME; @@ -18,7 +16,7 @@ use crate::{ traits::Trait, }, macros_api::{Path, StructId}, - node_interner::{DefinitionId, TraitId, TypeAliasId}, + node_interner::{DefinitionId, TraitId}, Shared, StructType, }; use crate::{Type, TypeAlias}; diff --git a/compiler/noirc_frontend/src/elaborator/traits.rs b/compiler/noirc_frontend/src/elaborator/traits.rs index 1f2b0d92229..c2f9a83e559 100644 --- a/compiler/noirc_frontend/src/elaborator/traits.rs +++ b/compiler/noirc_frontend/src/elaborator/traits.rs @@ -5,14 +5,8 @@ use noirc_errors::Location; use crate::{ ast::{FunctionKind, TraitItem, UnresolvedGenerics, UnresolvedTraitConstraint}, - hir::{ - def_collector::dc_crate::UnresolvedTrait, def_map::ModuleId, - resolution::path_resolver::StandardPathResolver, - }, - hir_def::{ - function::{FuncMeta, HirFunction}, - traits::{TraitConstant, TraitFunction, TraitType}, - }, + hir::def_collector::dc_crate::UnresolvedTrait, + hir_def::traits::{TraitConstant, TraitFunction, TraitType}, macros_api::{ BlockExpression, FunctionDefinition, FunctionReturnType, Ident, ItemVisibility, NoirFunction, Param, Pattern, UnresolvedType, Visibility, diff --git a/compiler/noirc_frontend/src/elaborator/types.rs b/compiler/noirc_frontend/src/elaborator/types.rs index 3c8d805d802..2a1472b380d 100644 --- a/compiler/noirc_frontend/src/elaborator/types.rs +++ b/compiler/noirc_frontend/src/elaborator/types.rs @@ -5,14 +5,13 @@ use noirc_errors::{Location, Span}; use crate::{ ast::{ - BinaryOpKind, IntegerBitSize, NoirTypeAlias, UnresolvedGenerics, UnresolvedTraitConstraint, + BinaryOpKind, IntegerBitSize, UnresolvedGenerics, UnresolvedTraitConstraint, UnresolvedTypeExpression, }, hir::{ def_map::ModuleDefId, resolution::{ errors::ResolverError, - import::PathResolution, resolver::{verify_mutable_reference, SELF_TYPE_NAME}, }, type_check::{Source, TypeCheckError}, @@ -23,17 +22,14 @@ use crate::{ HirPrefixExpression, }, function::FuncMeta, - traits::{Trait, TraitConstraint}, + traits::TraitConstraint, }, macros_api::{ HirExpression, HirLiteral, HirStatement, Path, PathKind, SecondaryAttribute, Signedness, UnaryOp, UnresolvedType, UnresolvedTypeData, }, - node_interner::{ - DefinitionKind, DependencyId, ExprId, GlobalId, TraitId, TraitImplKind, TraitMethodId, - TypeAliasId, - }, - Generics, Shared, StructType, Type, TypeAlias, TypeBinding, TypeVariable, TypeVariableKind, + node_interner::{DefinitionKind, ExprId, GlobalId, TraitId, TraitImplKind, TraitMethodId}, + Generics, Type, TypeBinding, TypeVariable, TypeVariableKind, }; use super::Elaborator; @@ -635,7 +631,7 @@ impl<'context> Elaborator<'context> { rhs_type: &Type, span: Span, ) -> Type { - let mut unify = |this: &mut Self, expected| { + let unify = |this: &mut Self, expected| { this.unify(rhs_type, &expected, || TypeCheckError::TypeMismatch { expr_typ: rhs_type.to_string(), expected_typ: expected.to_string(),