Commit Graph

1421 Commits

Author SHA1 Message Date
Ehmry - 34238f66da Flake: take dhall-lang as input 2019-12-22 09:04:03 +00:00
Ehmry - 74002e1e1a Apply system structure to Nix flake outputs 2019-12-22 05:31:36 +00:00
Ehmry - b994765a92 Initial Nix flake 2019-12-22 04:52:26 +00:00
Gabriel Gonzalez 4c7b75b503
Version 1.27.0 → 1.28.0 (#1575) 2019-12-05 19:28:39 -08:00
Gabriel Gonzalez 1079b7a3a7 Improve diffs for lists (#1585)
Now the diff for lists will descend into diffs for elements when reasonable to
do so
2019-12-03 17:17:43 +00:00
Simon Jakobi 8d3c4e4250 Allow megaparsec-8 (#1582)
This also officially removes support for megaparsec-6.5 – the
build had been broken before though.
2019-12-03 03:28:06 +00:00
Gabriel Gonzalez 7d01d4685a Fix parsing of variables with keyword prefixes (#1584)
* Fix parsing of variables with keyword prefixes

Fixes https://github.com/dhall-lang/dhall-haskell/issues/1583

Note that one prefix is not yet supported: `missing`, since fixing that is
not easy for the current parsing implementation (as far as I can tell).

* Add regression test

... as suggested by @sjakobi

I'm not upstreaming this into the standard test suite yet because the
current parser cannot handle `missing`, which would be necessary to
generate the corresponding CBOR
2019-12-03 02:13:06 +00:00
Simon Jakobi de51dafe8e dhall-json: Add a defaultConversion for converting maps (#1579) 2019-12-02 23:00:51 +00:00
Simon Jakobi 338d640dcc Slightly optimize encoding of lists of known length (#1578) 2019-12-02 22:25:34 +00:00
Simon Jakobi 96ae330fb5 Allow hashable-1.3 (#1581) 2019-12-02 17:27:21 +00:00
Simon Jakobi a0bb273a89 Use atomic-write for inplace file modifications (#1580)
Fixes #498.
2019-12-02 07:14:42 -08:00
Simon Jakobi 85645a2470 dhall-to-{json,yaml,yaml-ng}: Handle empty maps correctly (#1561)
Fixes #1559.

This requires aeson-yaml >= 1.0.5.0 since older versions
incorrectly encode empty objects.

The raised bound also fixes #1560. A regression test is included.
2019-12-01 18:41:46 +00:00
Gabriel Gonzalez 8eb78704d5
Change website to link to `docs.dhall-lang.org` (#1576) 2019-12-01 08:20:43 -08:00
Gabriel Gonzalez 2c4edeb0a0 Fix `dhall repl` to handle quoted identifiers correctly (#1573)
Fixes https://github.com/dhall-lang/dhall-haskell/issues/1570
2019-11-30 09:09:41 +00:00
Gabriel Gonzalez 780aa94612
Permit spaces around completion operator (#1532)
... as standardized in https://github.com/dhall-lang/dhall-lang/pull/820
2019-11-23 18:45:04 -08:00
Simon Jakobi 1abcffaba2 Small optimizations around Dhall.Map and Dhall.Set (#1568)
While looking at some core I noticed that `null` for Dhall.Map used
the default `foldr`-based definition. I fixed that and added a few
more small optimizations.
2019-11-23 23:59:55 +00:00
Gabriel Gonzalez ff4e1d7028 Improve formatting of multi-line literals (#1569)
Fixes https://github.com/dhall-lang/dhall-haskell/issues/1566

This changes multi-line literals so that they can be formatted independently
of their surrounding expression
2019-11-23 22:29:46 +00:00
Frederik Ramcke d7cd30d2ce Use foldl' over foldl everywhere (#1564)
* Use foldl' over foldl

As suggested by @sjakobi. Germans banding together in the fight against
laziness!

* Add missing foldl' imports

* Ups, forgot one!
2019-11-23 16:28:13 +00:00
Simon Jakobi c3ac963b6e Add instance Show Ann (#1567)
This is useful for debugging the pretty-printer
2019-11-22 16:18:13 +00:00
Simon Jakobi feb378b8da Add an internal "dhall haskell-syntax-tree" command (#1553)
… for debugging.
2019-11-22 03:57:14 +00:00
Simon Jakobi 3b222cda91 Write cache files atomically (#1544)
Fixes https://github.com/dhall-lang/dhall-haskell/issues/1540.
2019-11-22 00:49:46 +00:00
Frederik Ramcke a41be1a742 Fix parser swallowing whitespace in Src annotations (#1563)
* Fix swallowed whitespace in Src annotations

The parser annotated application expressions incorrectly: whitespace
between function and argument was swallowed when constructing the Src
annotation. This bug resulted in strange behaviour in the hovering
functionality in dhall-lsp-server.

As an example, previously the Dhall expression `0 0` would be parsed as
```
Note (Src {..., srcText = "00"})
     (App (Note (Src {..., srcText = "0"}) (NaturalLit 0))
          (Note (Src {..., srcText = "0"}) (NaturalLit 0)))
```
while we now get
```
Note (Src {..., srcText = "0 0"})
     (App (Note (Src {..., srcText = "0"}) (NaturalLit 0))
          (Note (Src {..., srcText = "0"}) (NaturalLit 0)))
```
as expected.

* Use foldl' over foldl

As suggested by @sjakobi. Note that there are quite a few more
occurences of foldl where we don't actually need laziness, but I leave
that for someone else to fix :)

* Revert "Use foldl' over foldl"

This reverts commit 1bd9a5424cf06a60f20b6e408fba186952cbb9d1.
2019-11-21 18:01:23 +00:00
Gabriel Gonzalez 5f15c860b3 List dependencies in "post-order" (#1539)
* List dependencies in "post-order"

Related to https://github.com/dhall-lang/dhall-lang/issues/823

This lists dependencies starting from the leaves and concluding with the root
import, same as how `nix-store --query --requisites` does

Example output:

```bash
$ dhall resolve --no-cache --transitive-dependencies <<< 'https://prelude.dhall-lang.org/package.dhall'
https://prelude.dhall-lang.org/Bool/and
https://prelude.dhall-lang.org/Bool/build
https://prelude.dhall-lang.org/Bool/even
https://prelude.dhall-lang.org/Bool/fold
https://prelude.dhall-lang.org/Bool/not
https://prelude.dhall-lang.org/Bool/odd
https://prelude.dhall-lang.org/Bool/or
https://prelude.dhall-lang.org/Bool/show
https://prelude.dhall-lang.org/Bool/package.dhall
https://prelude.dhall-lang.org/Double/show
https://prelude.dhall-lang.org/Double/package.dhall
https://prelude.dhall-lang.org/Function/compose
https://prelude.dhall-lang.org/Function/package.dhall
https://prelude.dhall-lang.org/Integer/show
https://prelude.dhall-lang.org/Integer/toDouble
https://prelude.dhall-lang.org/Integer/package.dhall
https://prelude.dhall-lang.org/List/all
https://prelude.dhall-lang.org/List/any
https://prelude.dhall-lang.org/List/build
https://prelude.dhall-lang.org/List/concat
https://prelude.dhall-lang.org/List/concatMap
https://prelude.dhall-lang.org/List/default
https://prelude.dhall-lang.org/List/empty
https://prelude.dhall-lang.org/List/filter
https://prelude.dhall-lang.org/List/fold
https://prelude.dhall-lang.org/List/generate
https://prelude.dhall-lang.org/List/head
https://prelude.dhall-lang.org/List/indexed
https://prelude.dhall-lang.org/List/iterate
https://prelude.dhall-lang.org/List/last
https://prelude.dhall-lang.org/List/length
https://prelude.dhall-lang.org/List/map
https://prelude.dhall-lang.org/List/null
https://prelude.dhall-lang.org/List/partition
https://prelude.dhall-lang.org/List/replicate
https://prelude.dhall-lang.org/List/reverse
https://prelude.dhall-lang.org/List/shifted
https://prelude.dhall-lang.org/List/unzip
https://prelude.dhall-lang.org/List/package.dhall
https://prelude.dhall-lang.org/Location/Type
https://prelude.dhall-lang.org/Location/package.dhall
https://prelude.dhall-lang.org/Map/Type
https://prelude.dhall-lang.org/Map/Entry
https://prelude.dhall-lang.org/Map/empty
https://prelude.dhall-lang.org/Map/keyText
https://prelude.dhall-lang.org/Map/keyValue
https://prelude.dhall-lang.org/Map/keys
https://prelude.dhall-lang.org/Map/map
https://prelude.dhall-lang.org/Map/values
https://prelude.dhall-lang.org/Map/package.dhall
https://prelude.dhall-lang.org/Monoid
https://prelude.dhall-lang.org/Natural/build
https://prelude.dhall-lang.org/Natural/enumerate
https://prelude.dhall-lang.org/Natural/even
https://prelude.dhall-lang.org/Natural/fold
https://prelude.dhall-lang.org/Natural/isZero
https://prelude.dhall-lang.org/Natural/odd
https://prelude.dhall-lang.org/Natural/product
https://prelude.dhall-lang.org/Natural/sum
https://prelude.dhall-lang.org/Natural/show
https://prelude.dhall-lang.org/Natural/toDouble
https://prelude.dhall-lang.org/Natural/toInteger
https://prelude.dhall-lang.org/Natural/lessThanEqual
https://prelude.dhall-lang.org/Natural/greaterThanEqual
https://prelude.dhall-lang.org/Natural/lessThan
https://prelude.dhall-lang.org/Natural/equal
https://prelude.dhall-lang.org/Natural/greaterThan
https://prelude.dhall-lang.org/Natural/min
https://prelude.dhall-lang.org/Natural/max
https://prelude.dhall-lang.org/Optional/map
https://prelude.dhall-lang.org/Natural/listMin
https://prelude.dhall-lang.org/Natural/listMax
https://prelude.dhall-lang.org/Natural/sort
https://prelude.dhall-lang.org/Natural/subtract
https://prelude.dhall-lang.org/Natural/package.dhall
https://prelude.dhall-lang.org/Optional/all
https://prelude.dhall-lang.org/Optional/any
https://prelude.dhall-lang.org/Optional/build
https://prelude.dhall-lang.org/Optional/concat
https://prelude.dhall-lang.org/Optional/default
https://prelude.dhall-lang.org/Optional/filter
https://prelude.dhall-lang.org/Optional/fold
https://prelude.dhall-lang.org/Optional/head
https://prelude.dhall-lang.org/Optional/last
https://prelude.dhall-lang.org/Optional/length
https://prelude.dhall-lang.org/Optional/null
https://prelude.dhall-lang.org/Optional/toList
https://prelude.dhall-lang.org/Optional/unzip
https://prelude.dhall-lang.org/Optional/package.dhall
https://prelude.dhall-lang.org/JSON/Type
https://prelude.dhall-lang.org/JSON/Nesting
https://prelude.dhall-lang.org/JSON/Tagged
https://prelude.dhall-lang.org/JSON/keyText
https://prelude.dhall-lang.org/JSON/keyValue
https://prelude.dhall-lang.org/JSON/string
https://prelude.dhall-lang.org/JSON/number
https://prelude.dhall-lang.org/JSON/object
https://prelude.dhall-lang.org/JSON/array
https://prelude.dhall-lang.org/JSON/bool
https://prelude.dhall-lang.org/JSON/null
https://prelude.dhall-lang.org/Text/concatMapSep
https://prelude.dhall-lang.org/JSON/render
https://prelude.dhall-lang.org/JSON/package.dhall
https://prelude.dhall-lang.org/Text/concat
https://prelude.dhall-lang.org/Text/concatMap
https://prelude.dhall-lang.org/Text/concatSep
https://prelude.dhall-lang.org/Text/default
https://prelude.dhall-lang.org/Text/defaultMap
https://prelude.dhall-lang.org/Text/show
https://prelude.dhall-lang.org/Text/package.dhall
https://prelude.dhall-lang.org/XML/Type
https://prelude.dhall-lang.org/XML/attribute
https://prelude.dhall-lang.org/XML/render
https://prelude.dhall-lang.org/XML/element
https://prelude.dhall-lang.org/XML/leaf
https://prelude.dhall-lang.org/XML/text
https://prelude.dhall-lang.org/XML/emptyAttributes
https://prelude.dhall-lang.org/XML/package.dhall
https://prelude.dhall-lang.org/package.dhall
```

* Document order in `dhall resolve --help` output

... as suggested by @sjakobi

* Fix dhall-lsp-server build
2019-11-21 16:20:48 +00:00
Frederik Ramcke 619788f795 dhall-lsp-server: Fix hovering in presence of nested lets (#1537)
* Fix hacked-together parsers

Back when we changed the linter to preserve let comments we made
whitespace parsing explicit (previously combinators swallowed any
trailing whitespace), but we forgot to update the hacked-together
parsers used by the LSP server. As a result, various convenience
features broke, but that's easy enough to fix.

* Fix 'annotate lets' and 'type on hover' features

Both features only work as intended if as much of the Dhall code as
possible is wrapped in Note annotations, since we use that to figure out
where the user was pointing. Since the removal of explicit multi-lets in
the syntax the parser no longer wraps immediately nested lets (i.e.
multilets) in Notes, which means we need to split them manually (like we
used to).

* Fix hovering test

Now the behaviour expected by the test matches what we would want in
reality.
2019-11-20 17:02:06 +00:00
Ville Tirronen 6c68f8206d Improved error messages. (#1528)
This patch improves some of the error messages:

1) Bad field names on record completion:

```
echo "{Type =  {x : Integer, y : Bool}, Default = {y = True}}::{x = 5}" |stack exec dhall

Use "dhall --explain" for detailed errors

Error: Completion record is missing a field: default

1│ {Type =  {x : Integer, y : Bool}, Default = {y = True}}::{x = 5}

(stdin):1:1
```

2) Trying to complete non-records:

```
Use "dhall --explain" for detailed errors

Error: You can only complete records

1│ True::{x = 5}

(stdin):1:1
```

3) Possibly better short message on if predicates

```
echo "if 1 then 2 else 3" |stack exec dhall

Use "dhall --explain" for detailed errors

Error: Invalid predicate for ❰if❱: Natural

1│ if 1 then 2 else 3

(stdin):1:1
```

4) Possibly better short message on list annotations. This is probably
   superfluous

```
echo "[] : Bool" |stack exec dhall

Use "dhall --explain" for detailed errors

Error: Invalid type for ❰List❱: Bool

1│ [] : Bool
```

5) Better short message on missing constructors:
```
echo "<Foo : Bool>.Boo True" |stack exec dhall

Use "dhall --explain" for detailed errors

Error: Missing constructor: Boo

1│ <Foo : Bool>.Boo

(stdin):1:1
```

6) Better short messages on missing handlers
2019-11-19 08:04:15 -08:00
Simon Jakobi 3fdf075259 Output the context of a type error with syntax highlighting (#1556) 2019-11-19 07:11:22 +00:00
Simon Jakobi e12dd9adce dhall-json: Don't normalize schema type before type-checking (#1555)
The normalization removed the source context on the expression,
which made the type error message harder to understand.

Fixes #1515.
2019-11-19 00:30:01 +00:00
Simon Jakobi 4bf970b315
Fix formatting of multi-line strings that end with a single-quote (#1554)
Fixes #1547.

Also fix haddocks for escapeLastLineLeadingWhitespace.
2019-11-17 20:05:47 +01:00
Simon Jakobi 1a831d1813
Preserve leading whitespace in multi-line strings (#1550)
… by moving any leading whitespace on the _last_ line into a string interpolation.

This ensures that the parser can find the correct indentation level, no matter
what the other lines contain.

The additional null-check in prettyChunks is necessary to preserve formatting
idempotence. Otherwise

    "\n "

is first formatted as

    ''

    ${" "}''

but turns into

    "\n${" "}"

on re-formatting.

Fixes #1545.
2019-11-17 18:45:51 +01:00
Simon Jakobi 145b7b8549
Fix formatting of strings containing control characters (#1543)
Since control characters like '\b' cannot be escaped directly in
multi-line strings, we move them into string interpolations. E.g.

    "\n\b"

is formatted as

    ''

    ${"\b"}''

This partially addresses the malformatting of the Prelude.Text.show
example discovered in https://github.com/dhall-lang/dhall-lang/pull/822.

This sample string is now malformatted due to #1545 though.
2019-11-17 15:54:17 +01:00
Simon Jakobi 416160b29a Fix formatting of POSIX env vars (#1552)
Fixes #1468.
2019-11-17 03:13:16 +00:00
SiriusStarr d4050aef27 Correct validation of unicode escapes (#1549) 2019-11-16 12:56:54 -08:00
Simon Jakobi f18ec5f8e0 Dhall.Pretty.layout: Add comment regarding whitespace stripping (#1538) 2019-11-14 19:02:46 +00:00
Simon Jakobi 53320c8e19 Add regression tests for #1400 (#1536)
Fixes #1400.
2019-11-14 16:11:51 +00:00
Simon Jakobi dedd5e0ea6
Strip trailing whitespace (#1422)
This raises the lower bound on prettyprinter to 1.5.1 since
`removeTrailingWhitespace` is buggy in earlier versions.

This jailbreaks hnix, which isn't compatible with prettyprinter-1.5.1 yet.

Fixes #183, #1400, #1525. 

Co-authored-by: Gabriel Gonzalez <Gabriel439@gmail.com>
2019-11-14 14:43:35 +01:00
Frederik Ramcke 12ca71f0c7 dhall-lsp-server: Add option to only use ASCII when formatting and linting (#1533)
* Add config support

The config so far consists of a single `asciiOnly` flag (whose intended
behaviour is not yet implemented).

* Implement 'ascii-only' option when formatting and linting

This commit adds functionality to the 'asciiOnly' flag, i.e. when turned
on we don't output fancy non-ascii characters. Needs a recent version of
the client to function -- the version on the marketplace does not relay
configuration data to the server yet!
2019-11-14 05:08:05 +00:00
Gabriel Gonzalez bd0b2135e5 Make `missing` referentially transparent (#1509)
... as standardized in https://github.com/dhall-lang/dhall-lang/pull/804
2019-11-14 04:41:25 +00:00
Gabriel Gonzalez db69955356
Add Code of Conduct (#1523)
... based on the [Contributor Covenant](https://www.contributor-covenant.org/)
2019-11-13 19:36:03 -08:00
Gabriel Gonzalez 39aaa86fb9
Revamp dhall-lang.org (#1526)
The main changes are:

* Rework the text substantially to match [the new
  "pitch"](https://discourse.dhall-lang.org/t/more-brainstorming-for-changing-the-dhall-lang-org-landing-page/101/18)
* Add a new "Hash" tab to the live demo
* Use the [new logo](https://github.com/dhall-lang/dhall-lang/pull/803)
2019-11-13 08:34:44 -08:00
Simon Jakobi cc176e1e93 Simplify the doctest invocation (#1433)
* Simplify the doctest invocation

This doesn't change the number of tests covered.

Fixes #1431.

* Try to fix doctests on Hydra

* Fix doctests with cabal v1-test and try to explain how

* Don't target the Dhall module directly

Dhall.Tutorial already depends on it.
2019-11-13 08:04:05 +00:00
Gabriel Gonzalez 711ee2b00a Add `dhall lint` support for fixing parent-anchored paths (#1531)
* Add `dhall lint` support for fixing parent-anchored paths

* Fix haddocks to be consistent

... as caught by @sjakobi

Co-Authored-By: Simon Jakobi <simon.jakobi@gmail.com>
2019-11-12 19:11:05 +00:00
Brian Wignall 5580981599 Fix small typo (#1530) 2019-11-12 13:58:02 +00:00
Gabriel Gonzalez 008a9c3e37 Fix parser for expressions with nested annotations (#1527)
Fixes https://github.com/dhall-lang/dhall-haskell/issues/1467

We now no longer replace an annotation if one was already present
2019-11-11 20:43:29 +00:00
Gabriel Gonzalez a0c3be9ca1 Fix import resolution performance regression (#1522)
* Fix import resolution performance regression

Related to https://github.com/dhall-lang/dhall-haskell/issues/1511

This fixes a performance regression introduced in #1159 where `newManager`
was being called on every remote import.  This fixes that by going back to
caching the `Manager` created by the first request.

This leads to *dramatic* performance improvements for import-rich packages
(like the Prelude or `dhall-kubernetes`) on the first import.  For example,
here are the performance numbers for importing the Prelude for a cold cache
before and after this change:

Before:

```
$ XDG_CACHE_HOME=.cache time dhall hash <<< 'https://prelude.dhall-lang.org/package.dhall'
sha256:99462c205117931c0919f155a6046aec140c70fb8876d208c7c77027ab19c2fa
       64.10 real        10.83 user         2.73 sys
```

After:

```
$ XDG_CACHE_HOME=.cache2 time dhall hash <<< 'https://prelude.dhall-lang.org/package.dhall'
sha256:99462c205117931c0919f155a6046aec140c70fb8876d208c7c77027ab19c2fa
        4.39 real         0.49 user         0.15 sys
```

That's ~16x faster!

The improvement for `dhall-kubernetes` is smaller, but still significant:

Before:

```
$ XDG_CACHE_HOME=.cache3 time dhall hash <<< ~/proj/dhall-kubernetes-charts/stable/jenkins/index.dhall
sha256:04ebd960f6af331c49c3ccaedb353ac8269032b54fe0a29bd167febcd7104d4f
      833.59 real       145.36 user        36.16 sys

After:

```
$ XDG_CACHE_HOME=.cache4 time dhall hash <<< ~/proj/dhall-kubernetes-charts/stable/jenkins/index.dhall
sha256:04ebd960f6af331c49c3ccaedb353ac8269032b54fe0a29bd167febcd7104d4f
      381.41 real         8.41 user         1.91 sys
```

... or ~2-3x improvement.

* Fix `-f-with-http` build

* Remove unnecessary `CPP`

... as caught by @sjakobi
2019-11-08 18:58:03 +00:00
Gabriel Gonzalez 6a160dbae9 Including missing field name in short error message (#1519)
* Including missing field name in short error message

Fixes https://github.com/dhall-lang/dhall-haskell/issues/1513

* Escape reserved labels in the error message

... as suggested by @sjakobi
2019-11-08 03:05:25 +00:00
Gabriel Gonzalez d9ea71c765 Fix assertions in body of `let` bindings (#1518)
* Fix assertions in body of `let` bindings

Fixes https://github.com/dhall-lang/dhall-haskell/issues/1517

* No need to unpack `Binding`
2019-11-07 19:18:57 +00:00
Simon Jakobi 6d0251f0db README: Include Hackage link for dhall-lsp-server (#1520) 2019-11-07 17:48:38 +00:00
Simon Jakobi cd49b65c23 Move HsYAML-based code to new package dhall-yaml (#1514)
* Shared code for the dhall-to-yaml[-ng] executables stays in dhall-json.
* Shared tests are in dhall-yaml.

Fixes #1435.
2019-11-07 12:11:04 +00:00
Simon Jakobi e931451a2b Format more text literals as multi-line strings (#1508)
This causes text literals to be formatted as multi-line strings
whenever they contain at least one newline and at least one non-newline
character. "Spacers" like `"\n\n"` continue be formatted as single-line
strings. If the heuristic turns out to be too eager to choose a
multi-line layout, we can refine it later.

This partially addresses #1496.

Also

* update some variable names

* use 80-column "smart" layout consistently
2019-11-04 03:31:49 +00:00
Gabriel Gonzalez b3b6bb4e1d Partially fix whitespace parsing performance regression (#1512)
* Partially fix whitespace parsing performance regression

This undoes some of the performance regression introduced
in https://github.com/dhall-lang/dhall-haskell/pull/1483

Before #1483:

```
benchmarked Line comment
time                 11.86 ms   (11.69 ms .. 11.98 ms)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 11.84 ms   (11.79 ms .. 11.89 ms)
std dev              129.4 μs   (107.2 μs .. 164.1 μs)

benchmarked Block comment
time                 13.20 ms   (13.00 ms .. 13.41 ms)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 13.59 ms   (13.41 ms .. 13.94 ms)
std dev              600.0 μs   (142.2 μs .. 953.7 μs)
```

After #1483:

```
benchmarked Line comment
time                 288.7 ms   (282.8 ms .. 294.7 ms)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 292.3 ms   (290.8 ms .. 294.6 ms)
std dev              3.156 ms   (2.216 ms .. 4.546 ms)

benchmarked Block comment
time                 286.2 ms   (280.9 ms .. 292.6 ms)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 290.6 ms   (288.3 ms .. 292.9 ms)
std dev              3.875 ms   (2.866 ms .. 5.500 ms)
```

After this change:

```
benchmarked Line comment
time                 61.44 ms   (60.37 ms .. 63.03 ms)
                     0.999 R²   (0.997 R² .. 1.000 R²)
mean                 61.41 ms   (60.74 ms .. 62.25 ms)
std dev              1.341 ms   (945.0 μs .. 1.901 ms)

benchmarked Block comment
time                 61.83 ms   (60.97 ms .. 63.14 ms)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 61.16 ms   (60.33 ms .. 61.85 ms)
std dev              1.396 ms   (1.011 ms .. 1.907 ms)
```

* Correctly parse `https://example.com usingBla`

... as caught by @sjakobi
2019-11-04 02:12:02 +00:00