Aleksey Kladov
73d73077fe
Separate creation and initialization of global state
2020-06-26 00:27:57 +02:00
adamrk
0ebc24043b
Infer type for slice wildcard patterns
2020-06-25 23:16:58 +02:00
Aleksey Kladov
df769e5bb4
Simplify diagnostics handling
2020-06-25 22:45:35 +02:00
Aleksey Kladov
86a4d4cb9c
Simplify
2020-06-25 19:23:52 +02:00
Aleksey Kladov
dba11cb060
-mMake it harder to accidently early-exit the loop
2020-06-25 19:01:16 +02:00
Paul Daniel Faria
de9e964e4a
Track import type outside of , use enum rather than bool to improve readability
2020-06-25 12:42:12 -04:00
bors[bot]
b5aa92bab9
Merge #5064
...
5064: Add NotificationDispatcher r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-25 16:29:23 +00:00
Aleksey Kladov
f5ea35a271
Add NotificationDispatcher
2020-06-25 18:28:58 +02:00
Aleksey Kladov
22098127c4
Move request dispatcher to a separate file
2020-06-25 17:22:18 +02:00
bors[bot]
ba72863452
Merge #5063
...
5063: Store field/variant attrs in ItemTree and use it for adt.rs queries r=jonas-schievink a=jonas-schievink
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-06-25 15:18:35 +00:00
Aleksey Kladov
379a096de9
Refactor main_loop
2020-06-25 17:14:11 +02:00
Jonas Schievink
dad2f75b91
Use ItemTree to answer enum_data query
2020-06-25 16:52:47 +02:00
Jonas Schievink
563d585594
Use IdRange for variants
2020-06-25 16:52:15 +02:00
Jonas Schievink
b06214d164
Generalize FieldIds -> IdRange<T>
2020-06-25 16:42:59 +02:00
Jonas Schievink
2a8fc9e682
adt.rs: fetch struct/union data from item tree
2020-06-25 16:41:08 +02:00
Aleksey Kladov
dd20c2ec5b
Move TaskPool into GlobalState
2020-06-25 15:35:42 +02:00
Paul Daniel Faria
0b657ddbfe
Revert resolution of all glob imports first, replace with tracking of glob imports and shadowing when more specific
2020-06-25 09:27:00 -04:00
Paul Daniel Faria
70d4829560
Order of glob imports should not affect import shadowing
2020-06-25 09:23:34 -04:00
Jonas Schievink
d84b3ff6a1
Collect field/variant attrs in ItemTree
2020-06-25 14:39:27 +02:00
Aleksey Kladov
9cdeb1291e
Better event naming
2020-06-25 14:13:17 +02:00
Jonas Schievink
9ba7726579
Allow iterating fields in the ItemTree
2020-06-25 13:50:27 +02:00
bors[bot]
4ec0a2c454
Merge #5056
...
5056: Canonicalize actor API r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-25 11:48:53 +00:00
Aleksey Kladov
331addcf61
Canonicalize actor API
2020-06-25 13:47:22 +02:00
Aleksey Kladov
394a3dbcb5
Fix matchig brace for pipes
2020-06-25 10:16:06 +02:00
Aleksey Kladov
1ccf33d88f
Minor, move code
2020-06-25 09:51:30 +02:00
bors[bot]
0d2e695ffc
Merge #5050
...
5050: Simplify r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-25 07:28:27 +00:00
Aleksey Kladov
941d4bfa53
Simplify
2020-06-25 09:27:59 +02:00
Aleksey Kladov
5d401092f0
Minor rename
2020-06-25 09:19:01 +02:00
bors[bot]
edf8f419b5
Merge #5049
...
5049: Rename ra_flycheck -> flycheck r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-25 07:15:30 +00:00
Aleksey Kladov
0ec5d4f55c
Rename ra_flycheck -> flycheck
2020-06-25 09:13:46 +02:00
bors[bot]
44d525d4e0
Merge #5048
...
5048: Unify code style for worker threads r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-25 07:01:14 +00:00
Aleksey Kladov
5a184fe855
Unify style
2020-06-25 09:00:33 +02:00
Aleksey Kladov
db58b3e063
matching brace works for | in lambdas
2020-06-25 08:49:26 +02:00
Aleksey Kladov
dab8808e82
Abstract over channel
2020-06-25 08:39:33 +02:00
Aleksey Kladov
69e6924dd5
Use Handle/Actor terminology for flycheck
2020-06-25 08:24:27 +02:00
Aleksey Kladov
874a5f80c7
Scale progress down
...
There are two reasons why we don't want a generic ra_progress crate
just yet:
*First*, it introduces a common interface between separate components,
and that is usually undesirable (b/c components start to fit the
interface, rather than doing what makes most sense for each particular
component).
*Second*, it introduces a separate async channel for progress, which
makes it harder to correlate progress reports with the work done. Ie,
when we see 100% progress, it's not blindly obvious that the work has
actually finished, we might have some pending messages still.
2020-06-25 08:01:03 +02:00
Aleksey Kladov
76a530242a
Merge branch 'Veetaha-feat/sync-branch'
2020-06-25 07:56:47 +02:00
Aleksey Kladov
10ee6eb733
Tweak visibility
2020-06-25 01:02:08 +02:00
Aleksey Kladov
012a7e57b9
Reduce visibility
2020-06-25 01:02:08 +02:00
Aleksey Kladov
19b063e055
Merge LoopState into GlobalState
2020-06-25 01:02:04 +02:00
Aleksey Kladov
693489e5ee
Flatten module hierarchy
2020-06-24 18:57:30 +02:00
Aleksey Kladov
d6c204c750
Cleanup visibility
2020-06-24 18:54:05 +02:00
bors[bot]
946b2c28a7
Merge #5038
...
5038: Make `iterate_method_candidates` non-generic r=jonas-schievink a=jonas-schievink
Closes https://github.com/rust-analyzer/rust-analyzer/issues/4975
bors r+ 🤖 ;)
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2020-06-24 15:45:39 +00:00
Jonas Schievink
cefb2204cb
Make iterate_method_candidates
non-generic
2020-06-24 17:45:38 +02:00
bors[bot]
7e61f4c59e
Merge #5035 #5037
...
5035: Less error-prone naming r=matklad a=matklad
bors r+
🤖
5037: Don't watch dirs if not asked to r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-24 15:18:13 +00:00
Aleksey Kladov
089ea36b2e
Don't watch dirs if not asked to
2020-06-24 17:11:07 +02:00
Aleksey Kladov
6937bcb67d
Less error-prone naming
2020-06-24 16:59:15 +02:00
Aleksey Kladov
ddc5a3e567
Fix infinite cargo check bug
2020-06-24 16:59:15 +02:00
Jonas Schievink
2928600374
Reorder items
2020-06-24 16:54:21 +02:00
Jonas Schievink
d6fd7809b0
Clean up and fix inner item collection a bit
2020-06-24 16:54:21 +02:00
Jonas Schievink
3b50b0b2b6
Use a HashMap instead of Vec
...
This is no longer enforcing stack discipline, so a Vec isn't necessary
or helpful
2020-06-24 16:54:21 +02:00
Jonas Schievink
59d4640b64
Remove unneeded HirFileId argument
2020-06-24 16:54:21 +02:00
Jonas Schievink
d4ddec2bdf
Shrink arenas after building ItemTree
2020-06-24 16:54:21 +02:00
Jonas Schievink
94169ee504
ItemTree: Use more boxed slices
2020-06-24 16:54:21 +02:00
Jonas Schievink
abdba92334
Don't allocate empty generics
2020-06-24 16:54:21 +02:00
Jonas Schievink
43cad21623
Don't allocate common visibilities
2020-06-24 16:54:20 +02:00
Jonas Schievink
16fd4dabb7
Remove file id from item tree
...
It's not needed, and `source` is only used by tests anyways
2020-06-24 16:53:56 +02:00
Jonas Schievink
c019002d17
Slightly reduce ItemTree memory footprint
2020-06-24 16:53:56 +02:00
Jonas Schievink
f9a1a9cd3c
Merge item tree traits
...
The Source trait isn't needed anymore since we no longer merge
extern crate items with use items.
2020-06-24 16:53:56 +02:00
Jonas Schievink
b5fd02d93c
Generate ModItem via macro
2020-06-24 16:53:56 +02:00
Jonas Schievink
20ff1cdcfb
Address more comments
2020-06-24 16:53:56 +02:00
Jonas Schievink
a0ad457575
if let else -> match
2020-06-24 16:53:56 +02:00
Jonas Schievink
ae7a296c85
Unify and test attribute handling
2020-06-24 16:53:56 +02:00
Jonas Schievink
689e147c9d
Collect inner items in expression macros
2020-06-24 16:53:54 +02:00
Jonas Schievink
5a81427304
Measure ItemTree query memory usage
2020-06-24 16:53:16 +02:00
Jonas Schievink
ffa0435050
Make generics and attr queries use ItemTree
...
Now it's fast
2020-06-24 16:53:16 +02:00
Jonas Schievink
19586bc5c6
Record HirFileId's in profiler
2020-06-24 16:53:16 +02:00
Jonas Schievink
1fbe21a545
Make remaining item data queries use item tree
2020-06-24 16:53:16 +02:00
Jonas Schievink
4b03b39d5b
draw the rest of the owl
2020-06-24 16:53:16 +02:00
Jonas Schievink
b94caeb88b
ItemTree: Make clonable and add AST access
2020-06-24 16:53:16 +02:00
Jonas Schievink
c12f7b610b
Lower generics
2020-06-24 16:53:16 +02:00
Jonas Schievink
864b650f92
ItemTree: use a newtyped ID
2020-06-24 16:53:16 +02:00
Jonas Schievink
278556f9fe
Move ItemTree lowering into its own module
2020-06-24 16:53:16 +02:00
Jonas Schievink
f9e5ba7d40
Remove now-broken incremental test
...
The ItemTree tracks impl and trait items, so the CrateDefMap now needs
recomputing when those change
2020-06-24 16:53:16 +02:00
Jonas Schievink
0e2602f75e
Remove raw item query
2020-06-24 16:53:16 +02:00
Jonas Schievink
7054e89d18
Fix test
2020-06-24 16:53:16 +02:00
Jonas Schievink
9d24412929
Move collector
2020-06-24 16:53:14 +02:00
Jonas Schievink
f9417bcf49
Draw the rest of the owl
2020-06-24 16:52:37 +02:00
Jonas Schievink
e24de2007f
collector changes WIP
2020-06-24 16:52:37 +02:00
Jonas Schievink
696a7a5a41
lower traits
2020-06-24 16:52:37 +02:00
Jonas Schievink
34bc80650b
Hook up query, add impls, lower moar
2020-06-24 16:52:37 +02:00
Aleksey Kladov
1d75d11d6c
Start item tree
2020-06-24 16:52:37 +02:00
Aleksey Kladov
e6c61d5072
Cleanup project.json deserialization
2020-06-24 16:16:52 +02:00
Aleksey Kladov
a07cad16ab
Rename json_project -> project_json
2020-06-24 16:03:24 +02:00
bors[bot]
97c4d06258
Merge #5015 #5027 #5028
...
5015: Account for updated module ids when determining whether a resolution is changed r=matklad a=Nashenas88
Fixes #4943
5027: Make Debug less verbose for VfsPath and use Display in analysis-stats r=matklad a=lnicola
5028: Remove namedExports config r=matklad a=lnicola
Fixes a warning:
```
(!) Plugin commonjs: The namedExports option from "@rollup/plugin-commonjs" is deprecated. Named exports are now handled automatically.
```
Co-authored-by: Paul Daniel Faria <Nashenas88@users.noreply.github.com>
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2020-06-24 13:02:37 +00:00
Paul Daniel Faria
43c6f6c039
Fix formatting issue with glob shadow test
2020-06-24 08:50:59 -04:00
Aleksey Kladov
154cb8243b
Be more explicit about absolute paths at various places
2020-06-24 14:39:34 +02:00
Paul Daniel Faria
dfd79907b8
Use a macro in push_res to simplify code, simplify glob_shadowed_def assertion
2020-06-24 08:20:41 -04:00
Laurențiu Nicola
c15c22139f
Make Debug less verbose for VfsPath and use Display in analysis-stats
2020-06-24 14:07:03 +03:00
bors[bot]
dff62def2e
Merge #5023
...
5023: Fix string literal inference in match r=flodiebold a=lnicola
Fixes #5020
r? @flodiebold
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2020-06-24 10:40:47 +00:00
bors[bot]
414b731e7d
Merge #5024 #5026
...
5024: Simplify r=matklad a=matklad
bors r+
🤖
5026: Disable file watching when running slow tests r=matklad a=matklad
This should rid us of the intermittent test failure
https://github.com/rust-analyzer/rust-analyzer/pull/5017#issuecomment-648717983
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-24 10:31:20 +00:00
Aleksey Kladov
0a2b6087ec
Simplify
2020-06-24 12:30:54 +02:00
Aleksey Kladov
a0b76161ab
Disable file watching when running slow tests
...
This should rid us of the intermittent test failure
https://github.com/rust-analyzer/rust-analyzer/pull/5017#issuecomment-648717983
2020-06-24 12:27:13 +02:00
Laurențiu Nicola
2bd9f0f020
Fix string literal inference in match
2020-06-24 13:20:06 +03:00
Aleksey Kladov
5e7a1a1203
Simplify
2020-06-24 12:01:17 +02:00
Aleksey Kladov
04fe512f0d
Simplify
2020-06-24 11:51:45 +02:00
Aleksey Kladov
9d64525daa
Simplify
2020-06-24 11:50:53 +02:00
Aleksey Kladov
d4a493078a
Simplify
2020-06-24 11:48:44 +02:00
Aleksey Kladov
c749fe223b
Remove duplication
2020-06-24 11:31:30 +02:00
Aleksey Kladov
c6795fb83a
More consistent usage of fixtures
2020-06-24 11:29:43 +02:00
Aleksey Kladov
e9cb818c26
Use fixtures more
2020-06-24 11:05:47 +02:00
Aleksey Kladov
08e2149eab
Simplify
2020-06-24 10:28:28 +02:00
bors[bot]
c544f9a137
Merge #4940
...
4940: Add support for marking doctest items as distinct from normal code r=ltentrup a=Nashenas88
This adds `HighlightTag::Generic | HighlightModifier::Injected` as the default highlight for all elements within a doctest. Please feel free to suggest that a new tag be created or a different one used.
![Screenshot from 2020-06-23 09-18-13](https://user-images.githubusercontent.com/1673130/85408493-9752ce00-b532-11ea-94fe-197353ccc778.png )
Fixes #4929
Fixes #4939
Co-authored-by: Paul Daniel Faria <Nashenas88@users.noreply.github.com>
Co-authored-by: Paul Daniel Faria <nashenas88@users.noreply.github.com>
2020-06-24 05:22:23 +00:00
Paul Daniel Faria
38af81f183
Account for updated module ids when determining whether a resolution is "changed"
2020-06-23 22:10:01 -04:00
Paul Daniel Faria
0d87eee3a9
Improve readability be replacing hard-to-read if-else branches with a match
2020-06-23 19:35:09 -04:00
Aleksey Kladov
d016cb4867
Use only one code-path for parsing fixtures
...
This removes leading newlines everywhere, shifting all ranges in tests
by one
2020-06-24 00:48:38 +02:00
Aleksey Kladov
e5101ae150
Centralize fixture parsing for assists
2020-06-24 00:30:34 +02:00
Aleksey Kladov
7ce122b1df
Remove useless test code
2020-06-23 23:45:40 +02:00
Aleksey Kladov
aa69757a01
More principled indentation trimming in fixtures
2020-06-23 23:33:41 +02:00
Aleksey Kladov
f2f69e75c8
Minor, rename
2020-06-23 22:51:33 +02:00
Aleksey Kladov
ff687453a8
Slightly better name
2020-06-23 21:29:50 +02:00
Aleksey Kladov
295c8d4f7f
Complicate
...
Fixing test fallout unfortunately requires more work, we need to do
it, but let's merge something at least!
2020-06-23 20:38:36 +02:00
Aleksey Kladov
a34f9b7fb3
Docs for Fixture
2020-06-23 18:58:45 +02:00
Aleksey Kladov
84cd28fddc
Cut problematic dependency
2020-06-23 18:56:26 +02:00
Aleksey Kladov
fdf86aee18
Nicer API
2020-06-23 18:46:56 +02:00
Aleksey Kladov
3486b47e5c
Simplify
2020-06-23 18:43:55 +02:00
Paul Daniel Faria
a8a606cdc4
Remove unrelated change
2020-06-23 12:40:55 -04:00
Aleksey Kladov
21f751a0e5
Simplify
2020-06-23 18:37:26 +02:00
Aleksey Kladov
30748161f0
Simplify
2020-06-23 18:37:26 +02:00
Aleksey Kladov
6996ec860b
Drop rarely used fixture functionality
2020-06-23 18:37:26 +02:00
Aleksey Kladov
f304874c8c
Move fixtures to a separate file
2020-06-23 18:37:26 +02:00
Paul Daniel Faria
1e9095ae8c
Update comment for pop_and_inject
...
Co-authored-by: Leander Tentrup <ltentrup@users.noreply.github.com>
2020-06-23 12:15:45 -04:00
Paul Daniel Faria
2a56323537
Update injection mechanism and stop injecting through highlight element, switch to more general new highlight tag, generic
2020-06-23 12:13:50 -04:00
Paul Daniel Faria
d8230acd84
Add punctuation highlighting for highlighting punctuation in doctests, fix highlighting in doctests
2020-06-23 12:11:33 -04:00
Paul Daniel Faria
e137d9accb
Add default color and opacity for documentation and injected, respectively, in the html generator
2020-06-23 12:08:04 -04:00
Paul Daniel Faria
351bba9bee
Add support for marking doctest items as distinct from normal code, add default tag to all doctest elements
2020-06-23 12:08:04 -04:00
Aleksey Kladov
dad1333b48
New VFS
2020-06-23 17:51:06 +02:00
bors[bot]
7aa66371ee
Merge #5010
...
5010: Remove relative-path dependency r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-23 15:04:42 +00:00
Aleksey Kladov
676e82bb83
Remove relative-path dependency
2020-06-23 17:04:10 +02:00
bors[bot]
c0b9ae5503
Merge #5004
...
5004: Fix panic in split/merge import assists r=matklad a=lnicola
Fixes #4368 #4905
Not sure if this is the best solution here. Maybe the `make` functions should be fallible? We generally seem to be playing whack-a-mole with panics in assists, although most of them are `unwrap`s in the assist code.
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2020-06-23 14:55:03 +00:00
Laurențiu Nicola
76ddface08
Fix panic in split and merge import assists
2020-06-23 16:51:07 +03:00
bors[bot]
3e09dbba94
Merge #5002
...
5002: Fix underflow panic when doctests are at top of file r=Nashenas88 a=Nashenas88
While debugging a comment at the top of a test string, I discovered that the offset calculations could underflow and panic. This only seemed to occur in tests, I assume because it's running a debug mode. The wrapping is quickly fixed later on in release mode, which is why this seems to have gone unnoticed. The new checks ensure the value is always positive or zero.
Co-authored-by: Paul Daniel Faria <nashenas88@users.noreply.github.com>
2020-06-23 13:25:43 +00:00
bors[bot]
338b229b79
Merge #4999
...
4999: SSR: Allow matching of whole macro calls r=matklad a=davidlattimore
Matching within macro calls is to come later and matching of macro calls within macro calls later still.
Co-authored-by: David Lattimore <dml@google.com>
2020-06-23 10:02:59 +00:00
Paul Daniel Faria
0b971625c3
Fix underflow panic when doctests are at top of file
2020-06-22 22:29:08 -04:00
bors[bot]
98c3e4e887
Merge #5000
...
5000: Remove RelativePathBuf from fixture r=matklad a=matklad
The paths in fixture are not really relative (the default one is
`/main.rs`), so it doesn't make sense to use `RelativePathBuf` here.
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-22 22:15:22 +00:00
Aleksey Kladov
6a6098d4c3
Remove RelativePathBuf from fixture
...
The paths in fixture are not really relative (the default one is
`/main.rs`), so it doesn't make sense to use `RelativePathBuf` here.
2020-06-23 00:14:44 +02:00
David Lattimore
467af611fb
SSR: Allow matching of whole macro calls
...
Matching within macro calls is to come later and matching of macro calls within macro calls later still.
2020-06-23 07:42:34 +10:00
bors[bot]
eabbeec14c
Merge #4988
...
4988: Don't offer to add missing fields of unknown types r=flodiebold a=lnicola
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2020-06-22 15:47:22 +00:00
Laurențiu Nicola
acc2819c10
Don't offer to add missing fields of unknown types
2020-06-22 18:16:00 +03:00
bors[bot]
87615166af
Merge #4900
...
4900: Self variant enum res fix r=BGluth a=BGluth
Fixes #4789 .
This is my first PR for this project, so it's probably worth giving it an extra close look.
A few things that I wasn't sure about:
- Is `resolve_path` really the best place to perform this check? It seemed like a natural place, but perhaps there's a better place?
- When handling the new variant `PathResolution::VariantDef`, I couldn't see an obvious variant of `TypeNs` to return in `in_type_ns` for Unions and Structs.
Co-authored-by: BGluth <gluthb@gmail.com>
2020-06-22 14:37:45 +00:00
BGluth
bdf7e70820
Enum variants with Self::[variant]
now resolve ( #4879 )
2020-06-22 08:28:53 -06:00
Aleksey Kladov
7c9f97ecb8
Add paths::RelPath[Buf]
2020-06-22 15:03:37 +02:00
bors[bot]
d8842e89e9
Merge #4899
...
4899: don't complete top level attrs inside nested attrs and add better labels r=matklad a=bnjjj
close #4890
Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-22 12:13:18 +00:00
bors[bot]
d144d69d2e
Merge #4921
...
4921: Allow SSR to match type references, items, paths and patterns r=davidlattimore a=davidlattimore
Part of #3186
Co-authored-by: David Lattimore <dml@google.com>
2020-06-22 11:50:34 +00:00
David Lattimore
662ab2ecc8
Allow SSR to match type references, items, paths and patterns
...
Part of #3186
2020-06-22 21:42:55 +10:00
Benjamin Coenen
5aad6c9fa6
don't complete top level attrs inside nested attrs and add better labels #4899
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-22 13:39:05 +02:00
bors[bot]
19701b39ac
Merge #4928
...
4928: Fix renaming mod in use tree r=matklad a=unexge
Fixes #4825
Co-authored-by: unexge <unexge@gmail.com>
2020-06-22 11:19:09 +00:00
BGluth
3a3b40a554
Created goto Self enum variant test
2020-06-21 13:27:16 -06:00
Benjamin Coenen
3df879f139
don't complete top level attrs inside nested attrs and add better labels #4899
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-21 19:14:08 +02:00
Benjamin Coenen
9342574097
do not suggest assist for return type to result in bad case #4826
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-21 18:47:27 +02:00