diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5724103..7213d92 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,5 +15,7 @@ jobs: run: npx elm-test - name: Check documentation run: elm make --docs=docs.json + - name: elm-review + run: npx elm-review - name: Verify documentation - run: npx elm-verify-examples --run-tests + run: npx elm-verify-examples --run-tests \ No newline at end of file diff --git a/review/elm.json b/review/elm.json new file mode 100644 index 0000000..b40ab29 --- /dev/null +++ b/review/elm.json @@ -0,0 +1,38 @@ +{ + "type": "application", + "source-directories": ["src"], + "elm-version": "0.19.1", + "dependencies": { + "direct": { + "elm/core": "1.0.5", + "elm/json": "1.1.3", + "jfmengels/elm-review": "2.15.1", + "jfmengels/elm-review-code-style": "1.2.0", + "jfmengels/elm-review-common": "1.3.3", + "jfmengels/elm-review-debug": "1.0.8", + "jfmengels/elm-review-documentation": "2.0.4", + "jfmengels/elm-review-simplify": "2.1.8", + "jfmengels/elm-review-unused": "1.2.4", + "miniBill/elm-review-no-broken-elm-parser-functions": "1.0.0" + }, + "indirect": { + "elm/bytes": "1.0.8", + "elm/html": "1.0.0", + "elm/parser": "1.1.0", + "elm/project-metadata-utils": "1.0.2", + "elm/random": "1.0.0", + "elm/regex": "1.0.0", + "elm/time": "1.0.0", + "elm/virtual-dom": "1.0.3", + "elm-explorations/test": "2.2.0", + "pzp1997/assoc-list": "1.0.0", + "rtfeldman/elm-hex": "1.0.0", + "stil4m/elm-syntax": "7.3.9", + "stil4m/structured-writer": "1.0.3" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/review/src/ReviewConfig.elm b/review/src/ReviewConfig.elm new file mode 100644 index 0000000..836e352 --- /dev/null +++ b/review/src/ReviewConfig.elm @@ -0,0 +1,60 @@ +module ReviewConfig exposing (config) + +import Docs.NoMissing exposing (exposedModules, onlyExposed) +import Docs.ReviewAtDocs +import Docs.ReviewLinksAndSections +import Docs.UpToDateReadmeLinks +import NoBrokenParserFunctions +import NoConfusingPrefixOperator +import NoDebug.Log +import NoDebug.TodoOrToString +import NoExposingEverything +import NoImportingEverything +import NoMissingTypeAnnotation +import NoMissingTypeAnnotationInLetIn +import NoMissingTypeExpose +import NoPrematureLetComputation +import NoSimpleLetBody +import NoUnused.CustomTypeConstructorArgs +import NoUnused.CustomTypeConstructors +import NoUnused.Dependencies +import NoUnused.Exports +import NoUnused.Parameters +import NoUnused.Patterns +import NoUnused.Variables +import Review.Rule as Rule exposing (Rule) +import Simplify + + +config : List Rule +config = + [ Docs.NoMissing.rule + { document = onlyExposed + , from = exposedModules + } + , Docs.ReviewLinksAndSections.rule + |> Rule.ignoreErrorsForFiles [ "README.md" ] + , Docs.ReviewAtDocs.rule + , NoConfusingPrefixOperator.rule + , NoDebug.Log.rule + , NoDebug.TodoOrToString.rule + |> Rule.ignoreErrorsForDirectories [ "tests/" ] + , NoExposingEverything.rule + , NoImportingEverything.rule [] + , NoMissingTypeAnnotation.rule + , NoMissingTypeAnnotationInLetIn.rule + |> Rule.ignoreErrorsForDirectories [ "tests/" ] + , NoMissingTypeExpose.rule + , NoSimpleLetBody.rule + , NoPrematureLetComputation.rule + , NoUnused.CustomTypeConstructors.rule [] + , NoUnused.CustomTypeConstructorArgs.rule + , NoUnused.Dependencies.rule + , NoUnused.Exports.rule + , NoUnused.Parameters.rule + , NoUnused.Patterns.rule + , NoUnused.Variables.rule + |> Rule.ignoreErrorsForDirectories [ "tests/" ] + , Simplify.rule (Simplify.defaults |> Simplify.expectNaN) + , NoBrokenParserFunctions.rule + ] diff --git a/review/suppressed/Docs.ReviewLinksAndSections.json b/review/suppressed/Docs.ReviewLinksAndSections.json new file mode 100644 index 0000000..429daaa --- /dev/null +++ b/review/suppressed/Docs.ReviewLinksAndSections.json @@ -0,0 +1,8 @@ +{ + "version": 1, + "automatically created by": "elm-review suppress", + "learn more": "elm-review suppress --help", + "suppressions": [ + { "count": 1, "filePath": "src/Yaml/Decode.elm" } + ] +} diff --git a/review/suppressed/NoMissingTypeAnnotationInLetIn.json b/review/suppressed/NoMissingTypeAnnotationInLetIn.json new file mode 100644 index 0000000..51255f2 --- /dev/null +++ b/review/suppressed/NoMissingTypeAnnotationInLetIn.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "automatically created by": "elm-review suppress", + "learn more": "elm-review suppress --help", + "suppressions": [ + { "count": 12, "filePath": "src/Yaml/Parser.elm" }, + { "count": 7, "filePath": "src/Yaml/Parser/Util.elm" }, + { "count": 4, "filePath": "src/Yaml/Encode.elm" }, + { "count": 1, "filePath": "src/Yaml/Decode.elm" }, + { "count": 1, "filePath": "src/Yaml/Parser/Ast.elm" }, + { "count": 1, "filePath": "src/Yaml/Parser/String.elm" } + ] +} diff --git a/review/suppressed/NoMissingTypeExpose.json b/review/suppressed/NoMissingTypeExpose.json new file mode 100644 index 0000000..93ef7bd --- /dev/null +++ b/review/suppressed/NoMissingTypeExpose.json @@ -0,0 +1,8 @@ +{ + "version": 1, + "automatically created by": "elm-review suppress", + "learn more": "elm-review suppress --help", + "suppressions": [ + { "count": 1, "filePath": "src/Yaml/Encode.elm" } + ] +} diff --git a/review/suppressed/NoUnused.Exports.json b/review/suppressed/NoUnused.Exports.json new file mode 100644 index 0000000..4115560 --- /dev/null +++ b/review/suppressed/NoUnused.Exports.json @@ -0,0 +1,8 @@ +{ + "version": 1, + "automatically created by": "elm-review suppress", + "learn more": "elm-review suppress --help", + "suppressions": [ + { "count": 5, "filePath": "src/Yaml/Parser/Util.elm" } + ] +} diff --git a/src/Yaml/Encode.elm b/src/Yaml/Encode.elm index eec702c..bc65c4a 100644 --- a/src/Yaml/Encode.elm +++ b/src/Yaml/Encode.elm @@ -169,19 +169,16 @@ int i = float : Float -> Encoder float f = let - sign = - if f < 0 then - "-" - - else - "" - val = if isNaN f then ".nan" else if isInfinite f then - sign ++ ".inf" + if f < 0 then + "-.inf" + + else + ".inf" else String.fromFloat f diff --git a/src/Yaml/Parser.elm b/src/Yaml/Parser.elm index 7df7740..190ae52 100644 --- a/src/Yaml/Parser.elm +++ b/src/Yaml/Parser.elm @@ -1,4 +1,4 @@ -module Yaml.Parser exposing (Value, fromString, parser, toString) +module Yaml.Parser exposing (Value, fromString, parser) import Dict exposing (Dict) import Parser as P exposing ((|.), (|=)) @@ -14,12 +14,6 @@ type alias Value = Ast.Value -{-| -} -toString : Value -> String -toString = - Ast.toString - - -- ERROR REPORTING @@ -479,7 +473,7 @@ duplicatedPropertyKeysCheck properties = duplicates = duplicatedPropertyKeys properties in - if List.length duplicates == 0 then + if List.isEmpty duplicates then P.succeed properties else diff --git a/src/Yaml/Parser/Ast.elm b/src/Yaml/Parser/Ast.elm index 9135fcd..76e8f05 100644 --- a/src/Yaml/Parser/Ast.elm +++ b/src/Yaml/Parser/Ast.elm @@ -140,13 +140,13 @@ fromString string = Float_ (0 / 0) ( mult, ".inf" ) -> - Float_ (mult * 1 / 0) + Float_ (mult / 0) ( mult, ".Inf" ) -> - Float_ (mult * 1 / 0) + Float_ (mult / 0) ( mult, ".INF" ) -> - Float_ (mult * 1 / 0) + Float_ (mult / 0) _ -> case String.toInt trimmed of @@ -233,7 +233,7 @@ fold f value z = Record_ r -> f value (List.foldl (fold f) z (Dict.values r)) - Anchor_ nm a -> + Anchor_ _ a -> f value (fold f a z) diff --git a/tests/Expectations.elm b/tests/Expectations.elm index 04345b1..9eae68d 100644 --- a/tests/Expectations.elm +++ b/tests/Expectations.elm @@ -27,7 +27,7 @@ expectFail expected got = -} expectOneOf : List comparable -> comparable -> Expect.Expectation expectOneOf expected got = - if List.any (\x -> x == got) expected then + if List.member got expected then Expect.pass else diff --git a/tests/TestEncoder.elm b/tests/TestEncoder.elm index f6c3ef1..eada423 100644 --- a/tests/TestEncoder.elm +++ b/tests/TestEncoder.elm @@ -2,7 +2,7 @@ module TestEncoder exposing (suite) import Dict import Expect -import Format exposing (formatFloat, formatFloatOutput) +import Format exposing (formatFloatOutput) import Fuzz exposing (bool, float, int, list, map2, string) import Test import Yaml.Decode as Decode @@ -323,12 +323,11 @@ suite = let boolToString : Bool -> String boolToString b = - case b of - True -> - "true" + if b then + "true" - False -> - "false" + else + "false" in Expect.equal ("{x: "