From c880709048345014b1bbf44b7fcac94f59b81a1d Mon Sep 17 00:00:00 2001 From: Jeroen Engels Date: Sat, 7 Mar 2020 18:05:52 +0100 Subject: [PATCH] Move Project.Dependency to its own module --- elm.json | 1 + src/NoUnusedDependencies.elm | 4 ++-- src/Review/Project.elm | 21 +++--------------- src/Review/Project/Dependency.elm | 36 +++++++++++++++++++++++++++++++ src/Review/Rule.elm | 9 ++++---- src/Scope2.elm | 4 ++-- 6 files changed, 49 insertions(+), 26 deletions(-) create mode 100644 src/Review/Project/Dependency.elm diff --git a/elm.json b/elm.json index 4b349653..cf08bf48 100644 --- a/elm.json +++ b/elm.json @@ -7,6 +7,7 @@ "exposed-modules": [ "Review.Rule", "Review.Project", + "Review.Project.Dependency", "Review.Fix", "Review.Test" ], diff --git a/src/NoUnusedDependencies.elm b/src/NoUnusedDependencies.elm index 7627ff6b..05a7d4e9 100644 --- a/src/NoUnusedDependencies.elm +++ b/src/NoUnusedDependencies.elm @@ -16,7 +16,7 @@ import Elm.Syntax.Import exposing (Import) import Elm.Syntax.ModuleName exposing (ModuleName) import Elm.Syntax.Node as Node exposing (Node) import Elm.Syntax.Range exposing (Range) -import Review.Project +import Review.Project.Dependency exposing (Dependency) import Review.Rule as Rule exposing (Error, Rule) import Set exposing (Set) @@ -65,7 +65,7 @@ moduleVisitor schema = |> Rule.withImportVisitor importVisitor -dependenciesVisitor : Dict String Review.Project.Dependency -> ProjectContext -> ProjectContext +dependenciesVisitor : Dict String Dependency -> ProjectContext -> ProjectContext dependenciesVisitor dependencies projectContext = let moduleNameToDependency : Dict String String diff --git a/src/Review/Project.elm b/src/Review/Project.elm index 8dc55d22..3fd83d9f 100644 --- a/src/Review/Project.elm +++ b/src/Review/Project.elm @@ -2,7 +2,7 @@ module Review.Project exposing ( Project, new , ProjectModule, addModule, addParsedModule, removeModule, modules, filesThatFailedToParse, moduleGraph, precomputeModuleGraph , withElmJson, elmJson - , Dependency, withDependency, removeDependencies, dependencies + , withDependency, removeDependencies, dependencies ) {-| Represents the contents of the project to be analyzed. This information will @@ -33,12 +33,11 @@ in existing environments like the CLI tool. # Project dependencies -@docs Dependency, withDependency, removeDependencies, dependencies +@docs withDependency, removeDependencies, dependencies -} import Dict exposing (Dict) -import Elm.Docs import Elm.Parser as Parser import Elm.Processing import Elm.Project @@ -46,8 +45,8 @@ import Elm.Syntax.File exposing (File) import Elm.Syntax.Module import Elm.Syntax.ModuleName exposing (ModuleName) import Elm.Syntax.Node as Node -import Elm.Version import Review.Dependencies +import Review.Project.Dependency exposing (Dependency) import Vendor.Graph as Graph exposing (Graph) @@ -289,20 +288,6 @@ elmJson (Project project) = project.elmJson - --- PROJECT DEPENDENCIES - - -{-| TODO Documentation --} -type alias Dependency = - { name : String - , version : Elm.Version.Version - , elmJson : Elm.Project.Project - , modules : List Elm.Docs.Module - } - - {-| Add a dependency to the project. These will be available for rules to make better assumptions on what is happening in the code. diff --git a/src/Review/Project/Dependency.elm b/src/Review/Project/Dependency.elm new file mode 100644 index 00000000..cc4c9c68 --- /dev/null +++ b/src/Review/Project/Dependency.elm @@ -0,0 +1,36 @@ +module Review.Project.Dependency exposing (Dependency, create) + +{-| TODO Documentation + +@docs Dependency, create + +-} + +import Elm.Docs +import Elm.Project +import Elm.Version + + + +-- DEFINITION + + +{-| TODO Documentation +-} +type alias Dependency = + { name : String + , version : Elm.Version.Version + , elmJson : Elm.Project.Project + , modules : List Elm.Docs.Module + } + + +{-| TODO Documentation +-} +create : String -> Elm.Version.Version -> Elm.Project.Project -> List Elm.Docs.Module -> Dependency +create name_ version_ elmJson_ modules_ = + { name = name_ + , version = version_ + , elmJson = elmJson_ + , modules = modules_ + } diff --git a/src/Review/Rule.elm b/src/Review/Rule.elm index 67def58c..c9fa49c7 100644 --- a/src/Review/Rule.elm +++ b/src/Review/Rule.elm @@ -237,6 +237,7 @@ import Elm.Syntax.Range exposing (Range) import Review.Exceptions as Exceptions exposing (Exceptions) import Review.Fix exposing (Fix) import Review.Project exposing (Project, ProjectModule) +import Review.Project.Dependency import Set exposing (Set) import Vendor.Graph as Graph exposing (Graph) import Vendor.IntDict as IntDict @@ -270,7 +271,7 @@ type ModuleRuleSchema configuration context { name : String , initialContext : context , elmJsonVisitors : List (Maybe Elm.Project.Project -> context -> context) - , dependenciesVisitors : List (Dict String Review.Project.Dependency -> context -> context) + , dependenciesVisitors : List (Dict String Review.Project.Dependency.Dependency -> context -> context) , moduleDefinitionVisitors : List (Node Module -> context -> ( List Error, context )) , commentsVisitors : List (List (Node String) -> context -> ( List Error, context )) , importVisitors : List (Node Import -> context -> ( List Error, context )) @@ -705,7 +706,7 @@ type ProjectRuleSchema projectContext moduleContext } , moduleVisitor : ModuleRuleSchema {} moduleContext -> ModuleRuleSchema { hasAtLeastOneVisitor : () } moduleContext , elmJsonVisitors : List (Maybe { elmJsonKey : ElmJsonKey, project : Elm.Project.Project } -> projectContext -> projectContext) - , dependenciesVisitors : List (Dict String Review.Project.Dependency -> projectContext -> projectContext) + , dependenciesVisitors : List (Dict String Review.Project.Dependency.Dependency -> projectContext -> projectContext) , finalEvaluationFns : List (projectContext -> List Error) , traversalType : TraversalType } @@ -954,7 +955,7 @@ withElmJsonProjectVisitor visitor (ProjectRuleSchema schema) = {-| TODO documentation -} withDependenciesProjectVisitor : - (Dict String Review.Project.Dependency -> projectContext -> projectContext) + (Dict String Review.Project.Dependency.Dependency -> projectContext -> projectContext) -> ProjectRuleSchema projectContext moduleContext -> ProjectRuleSchema projectContext moduleContext withDependenciesProjectVisitor visitor (ProjectRuleSchema schema) = @@ -1679,7 +1680,7 @@ withElmJsonModuleVisitor visitor (ModuleRuleSchema schema) = {-| TODO -} withDependenciesModuleVisitor : - (Dict String Review.Project.Dependency -> moduleContext -> moduleContext) + (Dict String Review.Project.Dependency.Dependency -> moduleContext -> moduleContext) -> ModuleRuleSchema { anything | withDependenciesModuleVisitor : () } moduleContext -> ModuleRuleSchema { anything | withDependenciesModuleVisitor : () } moduleContext withDependenciesModuleVisitor visitor (ModuleRuleSchema schema) = diff --git a/src/Scope2.elm b/src/Scope2.elm index 8c6a8eac..925c89f0 100644 --- a/src/Scope2.elm +++ b/src/Scope2.elm @@ -40,7 +40,7 @@ import Elm.Syntax.Signature exposing (Signature) import Elm.Syntax.TypeAnnotation as TypeAnnotation exposing (TypeAnnotation) import Elm.Type import NonemptyList exposing (Nonempty) -import Review.Project +import Review.Project.Dependency exposing (Dependency) import Review.Rule as Rule exposing (Direction) @@ -269,7 +269,7 @@ pairWithNoErrors fn visited context = -- DEPENDENCIES -dependenciesVisitor : Dict String Review.Project.Dependency -> InnerProjectContext -> InnerProjectContext +dependenciesVisitor : Dict String Dependency -> InnerProjectContext -> InnerProjectContext dependenciesVisitor dependencies innerContext = let dependenciesModules : Dict String Elm.Docs.Module