Skip to content

Commit 2c611ac

Browse files
authored
Merge pull request #293 from piegamesde/numbers
Parse numbers as strings
2 parents 65af4b6 + 432555a commit 2c611ac

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

src/Nixfmt/Parser.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Data.Char (isAlpha)
1414
import Data.Foldable (toList)
1515
import Data.Functor (($>))
1616
import Data.Maybe (fromMaybe, mapMaybe, maybeToList)
17-
import Data.Text (Text)
17+
import Data.Text (Text, pack)
1818
import qualified Data.Text as Text
1919
import Data.Void (Void)
2020
import Nixfmt.Lexer (lexeme, takeTrivia, whole)
@@ -71,8 +71,7 @@ import Text.Megaparsec (
7171
try,
7272
(<|>),
7373
)
74-
import Text.Megaparsec.Char (char)
75-
import qualified Text.Megaparsec.Char.Lexer as L (decimal)
74+
import Text.Megaparsec.Char (char, digitChar)
7675
import Prelude hiding (String)
7776

7877
-- HELPER FUNCTIONS
@@ -110,7 +109,7 @@ reserved t =
110109
-- VALUES
111110

112111
integer :: Parser (Ann Token)
113-
integer = ann Integer L.decimal
112+
integer = ann Integer (pack <$> some digitChar)
114113

115114
float :: Parser (Ann Token)
116115
float = ann Float floatParse

src/Nixfmt/Types.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ import Control.Monad.State.Strict (StateT)
4848
import Data.Bifunctor (first)
4949
import Data.Foldable (toList)
5050
import Data.Function (on)
51-
import Data.Int (Int64)
5251
import Data.List.NonEmpty as NonEmpty
5352
import Data.Maybe (maybeToList)
54-
import Data.Text (Text, pack)
53+
import Data.Text (Text)
5554
import Data.Void (Void)
5655
import Text.Megaparsec (Pos)
5756
import qualified Text.Megaparsec as MP (ParseErrorBundle, Parsec, pos1)
@@ -488,7 +487,7 @@ instance (LanguageElement a) => LanguageElement (NonEmpty a) where
488487
mapAllTokens f = NonEmpty.map (mapAllTokens f)
489488

490489
data Token
491-
= Integer Int64
490+
= Integer Text
492491
| Float Text
493492
| Identifier Text
494493
| EnvPath Text
@@ -588,7 +587,7 @@ operators =
588587

589588
tokenText :: Token -> Text
590589
tokenText (Identifier i) = i
591-
tokenText (Integer i) = pack (show i)
590+
tokenText (Integer i) = i
592591
tokenText (Float f) = f
593592
tokenText (EnvPath p) = "<" <> p <> ">"
594593
tokenText KAssert = "assert"

test/correct/numbers.nix

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
(-1)
44
0
55
1
6-
# 01
7-
# 0000000000000000000000000000000000000000000001
6+
# https://github.com/NixOS/nixfmt/issues/292
7+
01
8+
0000000000000000000000000000000000000000000001
89
9223372036854775807
10+
55555555555555555555555555555
11+
(-9223372036854775808)
12+
9223372036854775808
913

1014
.1
1115
0.1

0 commit comments

Comments
 (0)