diff options
-rw-r--r-- | .travis.yml | 3 | ||||
-rw-r--r-- | crates/ra_hir/src/nameres/collector.rs | 148 | ||||
-rw-r--r-- | crates/ra_hir/src/nameres/tests/mods.rs | 53 | ||||
-rw-r--r-- | docs/dev/README.md | 2 | ||||
-rw-r--r-- | docs/user/README.md | 3 | ||||
-rw-r--r-- | editors/code/package-lock.json | 197 | ||||
-rw-r--r-- | editors/code/package.json | 14 | ||||
-rw-r--r-- | editors/code/src/commands/inlay_hints.ts | 17 |
8 files changed, 269 insertions, 168 deletions
diff --git a/.travis.yml b/.travis.yml index d0d8311fe..87b546442 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -41,10 +41,9 @@ matrix: | |||
41 | - xvfb | 41 | - xvfb |
42 | before_install: cd editors/code | 42 | before_install: cd editors/code |
43 | install: | 43 | install: |
44 | - npm install | 44 | - npm ci |
45 | - npm run vscode:prepublish | 45 | - npm run vscode:prepublish |
46 | script: | 46 | script: |
47 | - npm ci | ||
48 | - npm run travis | 47 | - npm run travis |
49 | env: | 48 | env: |
50 | - CXX="g++-4.9", CC="gcc-4.9" | 49 | - CXX="g++-4.9", CC="gcc-4.9" |
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 7f765caf3..06b732215 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs | |||
@@ -1,7 +1,7 @@ | |||
1 | use std::borrow::Cow; | 1 | use std::borrow::Cow; |
2 | use std::sync::Arc; | ||
2 | 3 | ||
3 | use arrayvec::ArrayVec; | 4 | use ra_db::{FileId, SourceRoot}; |
4 | use ra_db::FileId; | ||
5 | use ra_syntax::{ast, SmolStr}; | 5 | use ra_syntax::{ast, SmolStr}; |
6 | use relative_path::RelativePathBuf; | 6 | use relative_path::RelativePathBuf; |
7 | use rustc_hash::FxHashMap; | 7 | use rustc_hash::FxHashMap; |
@@ -105,6 +105,7 @@ where | |||
105 | module_id, | 105 | module_id, |
106 | file_id: file_id.into(), | 106 | file_id: file_id.into(), |
107 | raw_items: &raw_items, | 107 | raw_items: &raw_items, |
108 | parent_module: None, | ||
108 | } | 109 | } |
109 | .collect(raw_items.items()); | 110 | .collect(raw_items.items()); |
110 | 111 | ||
@@ -455,8 +456,14 @@ where | |||
455 | if !self.macro_stack_monitor.is_poison(macro_def_id) { | 456 | if !self.macro_stack_monitor.is_poison(macro_def_id) { |
456 | let file_id: HirFileId = macro_call_id.as_file(MacroFileKind::Items); | 457 | let file_id: HirFileId = macro_call_id.as_file(MacroFileKind::Items); |
457 | let raw_items = self.db.raw_items(file_id); | 458 | let raw_items = self.db.raw_items(file_id); |
458 | ModCollector { def_collector: &mut *self, file_id, module_id, raw_items: &raw_items } | 459 | ModCollector { |
459 | .collect(raw_items.items()); | 460 | def_collector: &mut *self, |
461 | file_id, | ||
462 | module_id, | ||
463 | raw_items: &raw_items, | ||
464 | parent_module: None, | ||
465 | } | ||
466 | .collect(raw_items.items()); | ||
460 | } else { | 467 | } else { |
461 | log::error!("Too deep macro expansion: {:?}", macro_call_id); | 468 | log::error!("Too deep macro expansion: {:?}", macro_call_id); |
462 | self.def_map.poison_macros.insert(macro_def_id); | 469 | self.def_map.poison_macros.insert(macro_def_id); |
@@ -476,6 +483,7 @@ struct ModCollector<'a, D> { | |||
476 | module_id: CrateModuleId, | 483 | module_id: CrateModuleId, |
477 | file_id: HirFileId, | 484 | file_id: HirFileId, |
478 | raw_items: &'a raw::RawItems, | 485 | raw_items: &'a raw::RawItems, |
486 | parent_module: Option<&'a Name>, | ||
479 | } | 487 | } |
480 | 488 | ||
481 | impl<DB> ModCollector<'_, &'_ mut DefCollector<&'_ DB>> | 489 | impl<DB> ModCollector<'_, &'_ mut DefCollector<&'_ DB>> |
@@ -508,6 +516,7 @@ where | |||
508 | module_id, | 516 | module_id, |
509 | file_id: self.file_id, | 517 | file_id: self.file_id, |
510 | raw_items: self.raw_items, | 518 | raw_items: self.raw_items, |
519 | parent_module: Some(name), | ||
511 | } | 520 | } |
512 | .collect(&*items); | 521 | .collect(&*items); |
513 | } | 522 | } |
@@ -521,6 +530,7 @@ where | |||
521 | name, | 530 | name, |
522 | is_root, | 531 | is_root, |
523 | attr_path.as_ref(), | 532 | attr_path.as_ref(), |
533 | self.parent_module, | ||
524 | ) { | 534 | ) { |
525 | Ok(file_id) => { | 535 | Ok(file_id) => { |
526 | let module_id = self.push_child_module(name.clone(), ast_id, Some(file_id)); | 536 | let module_id = self.push_child_module(name.clone(), ast_id, Some(file_id)); |
@@ -530,6 +540,7 @@ where | |||
530 | module_id, | 540 | module_id, |
531 | file_id: file_id.into(), | 541 | file_id: file_id.into(), |
532 | raw_items: &raw_items, | 542 | raw_items: &raw_items, |
543 | parent_module: None, | ||
533 | } | 544 | } |
534 | .collect(raw_items.items()) | 545 | .collect(raw_items.items()) |
535 | } | 546 | } |
@@ -636,46 +647,47 @@ fn resolve_submodule( | |||
636 | name: &Name, | 647 | name: &Name, |
637 | is_root: bool, | 648 | is_root: bool, |
638 | attr_path: Option<&SmolStr>, | 649 | attr_path: Option<&SmolStr>, |
650 | parent_module: Option<&Name>, | ||
639 | ) -> Result<FileId, RelativePathBuf> { | 651 | ) -> Result<FileId, RelativePathBuf> { |
640 | // FIXME: handle submodules of inline modules properly | ||
641 | let file_id = file_id.original_file(db); | 652 | let file_id = file_id.original_file(db); |
642 | let source_root_id = db.file_source_root(file_id); | 653 | let source_root_id = db.file_source_root(file_id); |
643 | let path = db.file_relative_path(file_id); | 654 | let path = db.file_relative_path(file_id); |
644 | let root = RelativePathBuf::default(); | 655 | let root = RelativePathBuf::default(); |
645 | let dir_path = path.parent().unwrap_or(&root); | 656 | let dir_path = path.parent().unwrap_or(&root); |
646 | let mod_name = path.file_stem().unwrap_or("unknown"); | 657 | let mod_name = path.file_stem().unwrap_or("unknown"); |
647 | let is_dir_owner = is_root || mod_name == "mod"; | 658 | |
648 | 659 | let resolve_mode = match (attr_path.filter(|p| !p.is_empty()), parent_module) { | |
649 | let file_mod = dir_path.join(format!("{}.rs", name)); | 660 | (Some(file_path), Some(parent_name)) => { |
650 | let dir_mod = dir_path.join(format!("{}/mod.rs", name)); | 661 | let file_path = normalize_attribute_path(file_path); |
651 | let file_dir_mod = dir_path.join(format!("{}/{}.rs", mod_name, name)); | 662 | let path = dir_path.join(format!("{}/{}", parent_name, file_path)).normalize(); |
652 | let mut candidates = ArrayVec::<[_; 3]>::new(); | 663 | ResolutionMode::InsideInlineModule(InsideInlineModuleMode::WithAttributePath(path)) |
653 | let file_attr_mod = attr_path.map(|file_path| { | 664 | } |
654 | let file_path = normalize_attribute_path(file_path); | 665 | (Some(file_path), None) => { |
655 | let file_attr_mod = dir_path.join(file_path.as_ref()).normalize(); | 666 | let file_path = normalize_attribute_path(file_path); |
656 | candidates.push(file_attr_mod.clone()); | 667 | let path = dir_path.join(file_path.as_ref()).normalize(); |
657 | 668 | ResolutionMode::OutOfLine(OutOfLineMode::WithAttributePath(path)) | |
658 | file_attr_mod | 669 | } |
659 | }); | 670 | (None, Some(parent_name)) => { |
660 | if is_dir_owner { | 671 | let path = dir_path.join(format!("{}/{}.rs", parent_name, name)); |
661 | candidates.push(file_mod.clone()); | 672 | ResolutionMode::InsideInlineModule(InsideInlineModuleMode::File(path)) |
662 | candidates.push(dir_mod); | 673 | } |
663 | } else { | 674 | _ => { |
664 | candidates.push(file_dir_mod.clone()); | 675 | let is_dir_owner = is_root || mod_name == "mod"; |
665 | }; | 676 | if is_dir_owner { |
666 | let sr = db.source_root(source_root_id); | 677 | let file_mod = dir_path.join(format!("{}.rs", name)); |
667 | let mut points_to = candidates.into_iter().filter_map(|path| sr.files.get(&path)).copied(); | 678 | let dir_mod = dir_path.join(format!("{}/mod.rs", name)); |
668 | // FIXME: handle ambiguity | 679 | ResolutionMode::OutOfLine(OutOfLineMode::RootOrModRs { |
669 | match points_to.next() { | 680 | file: file_mod, |
670 | Some(file_id) => Ok(file_id), | 681 | directory: dir_mod, |
671 | None => { | 682 | }) |
672 | if let Some(file_attr_mod) = file_attr_mod { | ||
673 | Err(file_attr_mod) | ||
674 | } else { | 683 | } else { |
675 | Err(if is_dir_owner { file_mod } else { file_dir_mod }) | 684 | let path = dir_path.join(format!("{}/{}.rs", mod_name, name)); |
685 | ResolutionMode::OutOfLine(OutOfLineMode::FileInDirectory(path)) | ||
676 | } | 686 | } |
677 | } | 687 | } |
678 | } | 688 | }; |
689 | |||
690 | resolve_mode.resolve(db.source_root(source_root_id)) | ||
679 | } | 691 | } |
680 | 692 | ||
681 | fn normalize_attribute_path(file_path: &SmolStr) -> Cow<str> { | 693 | fn normalize_attribute_path(file_path: &SmolStr) -> Cow<str> { |
@@ -693,6 +705,74 @@ fn normalize_attribute_path(file_path: &SmolStr) -> Cow<str> { | |||
693 | } | 705 | } |
694 | } | 706 | } |
695 | 707 | ||
708 | enum OutOfLineMode { | ||
709 | RootOrModRs { file: RelativePathBuf, directory: RelativePathBuf }, | ||
710 | FileInDirectory(RelativePathBuf), | ||
711 | WithAttributePath(RelativePathBuf), | ||
712 | } | ||
713 | |||
714 | impl OutOfLineMode { | ||
715 | pub fn resolve(&self, source_root: Arc<SourceRoot>) -> Result<FileId, RelativePathBuf> { | ||
716 | match self { | ||
717 | OutOfLineMode::RootOrModRs { file, directory } => match source_root.files.get(file) { | ||
718 | None => resolve_simple_path(source_root, directory).map_err(|_| file.clone()), | ||
719 | file_id => resolve_find_result(file_id, file), | ||
720 | }, | ||
721 | OutOfLineMode::FileInDirectory(path) => resolve_simple_path(source_root, path), | ||
722 | OutOfLineMode::WithAttributePath(path) => resolve_simple_path(source_root, path), | ||
723 | } | ||
724 | } | ||
725 | } | ||
726 | |||
727 | enum InsideInlineModuleMode { | ||
728 | File(RelativePathBuf), | ||
729 | WithAttributePath(RelativePathBuf), | ||
730 | } | ||
731 | |||
732 | impl InsideInlineModuleMode { | ||
733 | pub fn resolve(&self, source_root: Arc<SourceRoot>) -> Result<FileId, RelativePathBuf> { | ||
734 | match self { | ||
735 | InsideInlineModuleMode::File(path) => resolve_simple_path(source_root, path), | ||
736 | InsideInlineModuleMode::WithAttributePath(path) => { | ||
737 | resolve_simple_path(source_root, path) | ||
738 | } | ||
739 | } | ||
740 | } | ||
741 | } | ||
742 | |||
743 | enum ResolutionMode { | ||
744 | OutOfLine(OutOfLineMode), | ||
745 | InsideInlineModule(InsideInlineModuleMode), | ||
746 | } | ||
747 | |||
748 | impl ResolutionMode { | ||
749 | pub fn resolve(&self, source_root: Arc<SourceRoot>) -> Result<FileId, RelativePathBuf> { | ||
750 | use self::ResolutionMode::*; | ||
751 | |||
752 | match self { | ||
753 | OutOfLine(mode) => mode.resolve(source_root), | ||
754 | InsideInlineModule(mode) => mode.resolve(source_root), | ||
755 | } | ||
756 | } | ||
757 | } | ||
758 | |||
759 | fn resolve_simple_path( | ||
760 | source_root: Arc<SourceRoot>, | ||
761 | path: &RelativePathBuf, | ||
762 | ) -> Result<FileId, RelativePathBuf> { | ||
763 | resolve_find_result(source_root.files.get(path), path) | ||
764 | } | ||
765 | |||
766 | fn resolve_find_result( | ||
767 | file_id: Option<&FileId>, | ||
768 | path: &RelativePathBuf, | ||
769 | ) -> Result<FileId, RelativePathBuf> { | ||
770 | match file_id { | ||
771 | Some(file_id) => Ok(file_id.clone()), | ||
772 | None => Err(path.clone()), | ||
773 | } | ||
774 | } | ||
775 | |||
696 | #[cfg(test)] | 776 | #[cfg(test)] |
697 | mod tests { | 777 | mod tests { |
698 | use ra_db::SourceDatabase; | 778 | use ra_db::SourceDatabase; |
diff --git a/crates/ra_hir/src/nameres/tests/mods.rs b/crates/ra_hir/src/nameres/tests/mods.rs index d714a3276..382728149 100644 --- a/crates/ra_hir/src/nameres/tests/mods.rs +++ b/crates/ra_hir/src/nameres/tests/mods.rs | |||
@@ -336,10 +336,10 @@ fn module_resolution_explicit_path_mod_rs_with_win_separator() { | |||
336 | "###); | 336 | "###); |
337 | } | 337 | } |
338 | 338 | ||
339 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 339 | // FIXME: issue #1529. not support out-of-line modules inside inline. |
340 | #[test] | 340 | #[test] |
341 | #[ignore] | 341 | #[ignore] |
342 | fn module_resolution_decl_inside_inline_module() { | 342 | fn module_resolution_decl_inside_inline_module_with_path_attribute() { |
343 | let map = def_map_with_crate_graph( | 343 | let map = def_map_with_crate_graph( |
344 | r###" | 344 | r###" |
345 | //- /main.rs | 345 | //- /main.rs |
@@ -368,10 +368,39 @@ fn module_resolution_decl_inside_inline_module() { | |||
368 | "###); | 368 | "###); |
369 | } | 369 | } |
370 | 370 | ||
371 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 371 | #[test] |
372 | fn module_resolution_decl_inside_inline_module() { | ||
373 | let map = def_map_with_crate_graph( | ||
374 | r###" | ||
375 | //- /main.rs | ||
376 | mod foo { | ||
377 | mod bar; | ||
378 | } | ||
379 | |||
380 | //- /foo/bar.rs | ||
381 | pub struct Baz; | ||
382 | "###, | ||
383 | crate_graph! { | ||
384 | "main": ("/main.rs", []), | ||
385 | }, | ||
386 | ); | ||
387 | |||
388 | assert_snapshot_matches!(map, @r###" | ||
389 | â‹®crate | ||
390 | â‹®foo: t | ||
391 | â‹® | ||
392 | â‹®crate::foo | ||
393 | â‹®bar: t | ||
394 | â‹® | ||
395 | â‹®crate::foo::bar | ||
396 | â‹®Baz: t v | ||
397 | "###); | ||
398 | } | ||
399 | |||
400 | // FIXME: issue #1529. not support out-of-line modules inside inline. | ||
372 | #[test] | 401 | #[test] |
373 | #[ignore] | 402 | #[ignore] |
374 | fn module_resolution_decl_inside_inline_module_2() { | 403 | fn module_resolution_decl_inside_inline_module_2_with_path_attribute() { |
375 | let map = def_map_with_crate_graph( | 404 | let map = def_map_with_crate_graph( |
376 | r###" | 405 | r###" |
377 | //- /main.rs | 406 | //- /main.rs |
@@ -400,7 +429,7 @@ fn module_resolution_decl_inside_inline_module_2() { | |||
400 | "###); | 429 | "###); |
401 | } | 430 | } |
402 | 431 | ||
403 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 432 | // FIXME: issue #1529. not support out-of-line modules inside inline. |
404 | #[test] | 433 | #[test] |
405 | #[ignore] | 434 | #[ignore] |
406 | fn module_resolution_decl_inside_inline_module_3() { | 435 | fn module_resolution_decl_inside_inline_module_3() { |
@@ -433,7 +462,7 @@ fn module_resolution_decl_inside_inline_module_3() { | |||
433 | "###); | 462 | "###); |
434 | } | 463 | } |
435 | 464 | ||
436 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 465 | // FIXME: issue #1529. not support out-of-line modules inside inline. |
437 | #[test] | 466 | #[test] |
438 | #[ignore] | 467 | #[ignore] |
439 | fn module_resolution_decl_inside_inline_module_empty_path() { | 468 | fn module_resolution_decl_inside_inline_module_empty_path() { |
@@ -491,7 +520,7 @@ fn module_resolution_decl_empty_path() { | |||
491 | "###); | 520 | "###); |
492 | } | 521 | } |
493 | 522 | ||
494 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 523 | // FIXME: issue #1529. not support out-of-line modules inside inline. |
495 | #[test] | 524 | #[test] |
496 | #[ignore] | 525 | #[ignore] |
497 | fn module_resolution_decl_inside_inline_module_relative_path() { | 526 | fn module_resolution_decl_inside_inline_module_relative_path() { |
@@ -523,9 +552,7 @@ fn module_resolution_decl_inside_inline_module_relative_path() { | |||
523 | "###); | 552 | "###); |
524 | } | 553 | } |
525 | 554 | ||
526 | // FIXME: issue #1510. not support out-of-line modules inside inline. | ||
527 | #[test] | 555 | #[test] |
528 | #[ignore] | ||
529 | fn module_resolution_decl_inside_inline_module_in_crate_root() { | 556 | fn module_resolution_decl_inside_inline_module_in_crate_root() { |
530 | let map = def_map_with_crate_graph( | 557 | let map = def_map_with_crate_graph( |
531 | r###" | 558 | r###" |
@@ -557,9 +584,7 @@ fn module_resolution_decl_inside_inline_module_in_crate_root() { | |||
557 | "###); | 584 | "###); |
558 | } | 585 | } |
559 | 586 | ||
560 | // FIXME: issue #1510. not support out-of-line modules inside inline. | ||
561 | #[test] | 587 | #[test] |
562 | #[ignore] | ||
563 | fn module_resolution_decl_inside_inline_module_in_mod_rs() { | 588 | fn module_resolution_decl_inside_inline_module_in_mod_rs() { |
564 | let map = def_map_with_crate_graph( | 589 | let map = def_map_with_crate_graph( |
565 | r###" | 590 | r###" |
@@ -597,9 +622,7 @@ fn module_resolution_decl_inside_inline_module_in_mod_rs() { | |||
597 | "###); | 622 | "###); |
598 | } | 623 | } |
599 | 624 | ||
600 | // FIXME: issue #1510. not support out-of-line modules inside inline. | ||
601 | #[test] | 625 | #[test] |
602 | #[ignore] | ||
603 | fn module_resolution_decl_inside_inline_module_in_non_crate_root() { | 626 | fn module_resolution_decl_inside_inline_module_in_non_crate_root() { |
604 | let map = def_map_with_crate_graph( | 627 | let map = def_map_with_crate_graph( |
605 | r###" | 628 | r###" |
@@ -613,7 +636,7 @@ fn module_resolution_decl_inside_inline_module_in_non_crate_root() { | |||
613 | } | 636 | } |
614 | use self::bar::baz::Baz; | 637 | use self::bar::baz::Baz; |
615 | 638 | ||
616 | //- /foo/bar/qwe.rs | 639 | //- /bar/qwe.rs |
617 | pub struct Baz; | 640 | pub struct Baz; |
618 | "###, | 641 | "###, |
619 | crate_graph! { | 642 | crate_graph! { |
@@ -637,7 +660,7 @@ fn module_resolution_decl_inside_inline_module_in_non_crate_root() { | |||
637 | "###); | 660 | "###); |
638 | } | 661 | } |
639 | 662 | ||
640 | // FIXME: issue #1510. not support out-of-line modules inside inline. | 663 | // FIXME: issue #1529. not support out-of-line modules inside inline. |
641 | #[test] | 664 | #[test] |
642 | #[ignore] | 665 | #[ignore] |
643 | fn module_resolution_decl_inside_inline_module_in_non_crate_root_2() { | 666 | fn module_resolution_decl_inside_inline_module_in_non_crate_root_2() { |
diff --git a/docs/dev/README.md b/docs/dev/README.md index 74c58d4af..0db3e731e 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md | |||
@@ -116,6 +116,8 @@ Due to the requirements of running the tests inside VS Code they are **not run | |||
116 | on CI**. When making changes to the extension please ensure the tests are not | 116 | on CI**. When making changes to the extension please ensure the tests are not |
117 | broken locally before opening a Pull Request. | 117 | broken locally before opening a Pull Request. |
118 | 118 | ||
119 | To install **only** the VS Code extension, use `cargo install-ra --client-code`. | ||
120 | |||
119 | # Logging | 121 | # Logging |
120 | 122 | ||
121 | Logging is done by both rust-analyzer and VS Code, so it might be tricky to | 123 | Logging is done by both rust-analyzer and VS Code, so it might be tricky to |
diff --git a/docs/user/README.md b/docs/user/README.md index 122388a42..a5e17f604 100644 --- a/docs/user/README.md +++ b/docs/user/README.md | |||
@@ -58,6 +58,9 @@ Beyond basic LSP features, there are some extension commands which you can | |||
58 | invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) | 58 | invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) |
59 | for details. | 59 | for details. |
60 | 60 | ||
61 | For updates, pull the latest changes from the master branch, run `cargo install-ra` again, and **restart** VS Code instance. | ||
62 | See https://github.com/microsoft/vscode/issues/72308[microsoft/vscode#72308] for why a full restart is needed. | ||
63 | |||
61 | ### Settings | 64 | ### Settings |
62 | 65 | ||
63 | * `rust-analyzer.highlightingOn`: enables experimental syntax highlighting | 66 | * `rust-analyzer.highlightingOn`: enables experimental syntax highlighting |
diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index fd4397e35..56cac1b49 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json | |||
@@ -5,18 +5,18 @@ | |||
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | "@babel/code-frame": { | 7 | "@babel/code-frame": { |
8 | "version": "7.0.0", | 8 | "version": "7.5.5", |
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", | 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", |
10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", | 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", |
11 | "dev": true, | 11 | "dev": true, |
12 | "requires": { | 12 | "requires": { |
13 | "@babel/highlight": "^7.0.0" | 13 | "@babel/highlight": "^7.0.0" |
14 | } | 14 | } |
15 | }, | 15 | }, |
16 | "@babel/highlight": { | 16 | "@babel/highlight": { |
17 | "version": "7.0.0", | 17 | "version": "7.5.0", |
18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", | 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", |
19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", | 19 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", |
20 | "dev": true, | 20 | "dev": true, |
21 | "requires": { | 21 | "requires": { |
22 | "chalk": "^2.0.0", | 22 | "chalk": "^2.0.0", |
@@ -25,15 +25,15 @@ | |||
25 | } | 25 | } |
26 | }, | 26 | }, |
27 | "@types/mocha": { | 27 | "@types/mocha": { |
28 | "version": "5.2.6", | 28 | "version": "5.2.7", |
29 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz", | 29 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", |
30 | "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==", | 30 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", |
31 | "dev": true | 31 | "dev": true |
32 | }, | 32 | }, |
33 | "@types/node": { | 33 | "@types/node": { |
34 | "version": "10.14.5", | 34 | "version": "10.14.13", |
35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.5.tgz", | 35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz", |
36 | "integrity": "sha512-Ja7d4s0qyGFxjGeDq5S7Si25OFibSAHUi6i17UWnwNnpitADN7hah9q0Tl25gxuV5R1u2Bx+np6w4LHXfHyj/g==", | 36 | "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==", |
37 | "dev": true | 37 | "dev": true |
38 | }, | 38 | }, |
39 | "@types/seedrandom": { | 39 | "@types/seedrandom": { |
@@ -43,18 +43,18 @@ | |||
43 | "dev": true | 43 | "dev": true |
44 | }, | 44 | }, |
45 | "agent-base": { | 45 | "agent-base": { |
46 | "version": "4.2.1", | 46 | "version": "4.3.0", |
47 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", | 47 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", |
48 | "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", | 48 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", |
49 | "dev": true, | 49 | "dev": true, |
50 | "requires": { | 50 | "requires": { |
51 | "es6-promisify": "^5.0.0" | 51 | "es6-promisify": "^5.0.0" |
52 | } | 52 | } |
53 | }, | 53 | }, |
54 | "ajv": { | 54 | "ajv": { |
55 | "version": "6.10.0", | 55 | "version": "6.10.2", |
56 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", | 56 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", |
57 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", | 57 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", |
58 | "dev": true, | 58 | "dev": true, |
59 | "requires": { | 59 | "requires": { |
60 | "fast-deep-equal": "^2.0.1", | 60 | "fast-deep-equal": "^2.0.1", |
@@ -158,9 +158,9 @@ | |||
158 | } | 158 | } |
159 | }, | 159 | }, |
160 | "browser-stdout": { | 160 | "browser-stdout": { |
161 | "version": "1.3.0", | 161 | "version": "1.3.1", |
162 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", | 162 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", |
163 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", | 163 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", |
164 | "dev": true | 164 | "dev": true |
165 | }, | 165 | }, |
166 | "buffer-crc32": { | 166 | "buffer-crc32": { |
@@ -228,9 +228,9 @@ | |||
228 | "dev": true | 228 | "dev": true |
229 | }, | 229 | }, |
230 | "combined-stream": { | 230 | "combined-stream": { |
231 | "version": "1.0.7", | 231 | "version": "1.0.8", |
232 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", | 232 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", |
233 | "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", | 233 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", |
234 | "dev": true, | 234 | "dev": true, |
235 | "requires": { | 235 | "requires": { |
236 | "delayed-stream": "~1.0.0" | 236 | "delayed-stream": "~1.0.0" |
@@ -372,9 +372,9 @@ | |||
372 | "dev": true | 372 | "dev": true |
373 | }, | 373 | }, |
374 | "es6-promise": { | 374 | "es6-promise": { |
375 | "version": "4.2.6", | 375 | "version": "4.2.8", |
376 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", | 376 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", |
377 | "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", | 377 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", |
378 | "dev": true | 378 | "dev": true |
379 | }, | 379 | }, |
380 | "es6-promisify": { | 380 | "es6-promisify": { |
@@ -484,9 +484,9 @@ | |||
484 | } | 484 | } |
485 | }, | 485 | }, |
486 | "growl": { | 486 | "growl": { |
487 | "version": "1.10.3", | 487 | "version": "1.10.5", |
488 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", | 488 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", |
489 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", | 489 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", |
490 | "dev": true | 490 | "dev": true |
491 | }, | 491 | }, |
492 | "har-schema": { | 492 | "har-schema": { |
@@ -553,12 +553,12 @@ | |||
553 | } | 553 | } |
554 | }, | 554 | }, |
555 | "https-proxy-agent": { | 555 | "https-proxy-agent": { |
556 | "version": "2.2.1", | 556 | "version": "2.2.2", |
557 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", | 557 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", |
558 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", | 558 | "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", |
559 | "dev": true, | 559 | "dev": true, |
560 | "requires": { | 560 | "requires": { |
561 | "agent-base": "^4.1.0", | 561 | "agent-base": "^4.3.0", |
562 | "debug": "^3.1.0" | 562 | "debug": "^3.1.0" |
563 | } | 563 | } |
564 | }, | 564 | }, |
@@ -728,33 +728,28 @@ | |||
728 | } | 728 | } |
729 | }, | 729 | }, |
730 | "mocha": { | 730 | "mocha": { |
731 | "version": "4.1.0", | 731 | "version": "5.2.0", |
732 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", | 732 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", |
733 | "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", | 733 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", |
734 | "dev": true, | 734 | "dev": true, |
735 | "requires": { | 735 | "requires": { |
736 | "browser-stdout": "1.3.0", | 736 | "browser-stdout": "1.3.1", |
737 | "commander": "2.11.0", | 737 | "commander": "2.15.1", |
738 | "debug": "3.1.0", | 738 | "debug": "3.1.0", |
739 | "diff": "3.3.1", | 739 | "diff": "3.5.0", |
740 | "escape-string-regexp": "1.0.5", | 740 | "escape-string-regexp": "1.0.5", |
741 | "glob": "7.1.2", | 741 | "glob": "7.1.2", |
742 | "growl": "1.10.3", | 742 | "growl": "1.10.5", |
743 | "he": "1.1.1", | 743 | "he": "1.1.1", |
744 | "minimatch": "3.0.4", | ||
744 | "mkdirp": "0.5.1", | 745 | "mkdirp": "0.5.1", |
745 | "supports-color": "4.4.0" | 746 | "supports-color": "5.4.0" |
746 | }, | 747 | }, |
747 | "dependencies": { | 748 | "dependencies": { |
748 | "commander": { | 749 | "commander": { |
749 | "version": "2.11.0", | 750 | "version": "2.15.1", |
750 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", | 751 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", |
751 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", | 752 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", |
752 | "dev": true | ||
753 | }, | ||
754 | "diff": { | ||
755 | "version": "3.3.1", | ||
756 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", | ||
757 | "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", | ||
758 | "dev": true | 753 | "dev": true |
759 | }, | 754 | }, |
760 | "glob": { | 755 | "glob": { |
@@ -771,19 +766,13 @@ | |||
771 | "path-is-absolute": "^1.0.0" | 766 | "path-is-absolute": "^1.0.0" |
772 | } | 767 | } |
773 | }, | 768 | }, |
774 | "has-flag": { | ||
775 | "version": "2.0.0", | ||
776 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", | ||
777 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", | ||
778 | "dev": true | ||
779 | }, | ||
780 | "supports-color": { | 769 | "supports-color": { |
781 | "version": "4.4.0", | 770 | "version": "5.4.0", |
782 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", | 771 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", |
783 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", | 772 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", |
784 | "dev": true, | 773 | "dev": true, |
785 | "requires": { | 774 | "requires": { |
786 | "has-flag": "^2.0.0" | 775 | "has-flag": "^3.0.0" |
787 | } | 776 | } |
788 | } | 777 | } |
789 | } | 778 | } |
@@ -895,15 +884,15 @@ | |||
895 | "dev": true | 884 | "dev": true |
896 | }, | 885 | }, |
897 | "prettier": { | 886 | "prettier": { |
898 | "version": "1.17.0", | 887 | "version": "1.18.2", |
899 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", | 888 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", |
900 | "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", | 889 | "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", |
901 | "dev": true | 890 | "dev": true |
902 | }, | 891 | }, |
903 | "psl": { | 892 | "psl": { |
904 | "version": "1.1.31", | 893 | "version": "1.2.0", |
905 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", | 894 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", |
906 | "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", | 895 | "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", |
907 | "dev": true | 896 | "dev": true |
908 | }, | 897 | }, |
909 | "punycode": { | 898 | "punycode": { |
@@ -1133,15 +1122,15 @@ | |||
1133 | } | 1122 | } |
1134 | }, | 1123 | }, |
1135 | "tslib": { | 1124 | "tslib": { |
1136 | "version": "1.9.3", | 1125 | "version": "1.10.0", |
1137 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", | 1126 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", |
1138 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", | 1127 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", |
1139 | "dev": true | 1128 | "dev": true |
1140 | }, | 1129 | }, |
1141 | "tslint": { | 1130 | "tslint": { |
1142 | "version": "5.16.0", | 1131 | "version": "5.18.0", |
1143 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz", | 1132 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz", |
1144 | "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==", | 1133 | "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", |
1145 | "dev": true, | 1134 | "dev": true, |
1146 | "requires": { | 1135 | "requires": { |
1147 | "@babel/code-frame": "^7.0.0", | 1136 | "@babel/code-frame": "^7.0.0", |
@@ -1150,7 +1139,7 @@ | |||
1150 | "commander": "^2.12.1", | 1139 | "commander": "^2.12.1", |
1151 | "diff": "^3.2.0", | 1140 | "diff": "^3.2.0", |
1152 | "glob": "^7.1.1", | 1141 | "glob": "^7.1.1", |
1153 | "js-yaml": "^3.13.0", | 1142 | "js-yaml": "^3.13.1", |
1154 | "minimatch": "^3.0.4", | 1143 | "minimatch": "^3.0.4", |
1155 | "mkdirp": "^0.5.1", | 1144 | "mkdirp": "^0.5.1", |
1156 | "resolve": "^1.3.2", | 1145 | "resolve": "^1.3.2", |
@@ -1206,9 +1195,9 @@ | |||
1206 | } | 1195 | } |
1207 | }, | 1196 | }, |
1208 | "typescript": { | 1197 | "typescript": { |
1209 | "version": "3.4.4", | 1198 | "version": "3.5.3", |
1210 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", | 1199 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", |
1211 | "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", | 1200 | "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", |
1212 | "dev": true | 1201 | "dev": true |
1213 | }, | 1202 | }, |
1214 | "uc.micro": { | 1203 | "uc.micro": { |
@@ -1239,12 +1228,12 @@ | |||
1239 | "dev": true | 1228 | "dev": true |
1240 | }, | 1229 | }, |
1241 | "url-parse": { | 1230 | "url-parse": { |
1242 | "version": "1.4.6", | 1231 | "version": "1.4.7", |
1243 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.6.tgz", | 1232 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", |
1244 | "integrity": "sha512-/B8AD9iQ01seoXmXf9z/MjLZQIdOoYl/+gvsQF6+mpnxaTfG9P7srYaiqaDMyKkR36XMXfhqSHss5MyFAO8lew==", | 1233 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", |
1245 | "dev": true, | 1234 | "dev": true, |
1246 | "requires": { | 1235 | "requires": { |
1247 | "querystringify": "^2.0.0", | 1236 | "querystringify": "^2.1.1", |
1248 | "requires-port": "^1.0.0" | 1237 | "requires-port": "^1.0.0" |
1249 | } | 1238 | } |
1250 | }, | 1239 | }, |
@@ -1300,52 +1289,52 @@ | |||
1300 | } | 1289 | } |
1301 | }, | 1290 | }, |
1302 | "vscode": { | 1291 | "vscode": { |
1303 | "version": "1.1.33", | 1292 | "version": "1.1.35", |
1304 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.33.tgz", | 1293 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.35.tgz", |
1305 | "integrity": "sha512-sXedp2oF6y4ZvqrrFiZpeMzaCLSWV+PpYkIxjG/iYquNZ9KrLL2LujltGxPLvzn49xu2sZkyC+avVNFgcJD1Iw==", | 1294 | "integrity": "sha512-xPnxzQU40LOS2yPyzWW+WKpTV6qA3z16TcgpZ9O38UWLA157Zz4GxUx5H7Gd07pxzw0GqvusbF4D+5GBgNxvEQ==", |
1306 | "dev": true, | 1295 | "dev": true, |
1307 | "requires": { | 1296 | "requires": { |
1308 | "glob": "^7.1.2", | 1297 | "glob": "^7.1.2", |
1309 | "mocha": "^4.0.1", | 1298 | "mocha": "^5.2.0", |
1310 | "request": "^2.88.0", | 1299 | "request": "^2.88.0", |
1311 | "semver": "^5.4.1", | 1300 | "semver": "^5.4.1", |
1312 | "source-map-support": "^0.5.0", | 1301 | "source-map-support": "^0.5.0", |
1313 | "url-parse": "^1.4.4", | 1302 | "url-parse": "^1.4.4", |
1314 | "vscode-test": "^0.1.4" | 1303 | "vscode-test": "^0.4.1" |
1315 | } | 1304 | } |
1316 | }, | 1305 | }, |
1317 | "vscode-jsonrpc": { | 1306 | "vscode-jsonrpc": { |
1318 | "version": "4.1.0-next.1", | 1307 | "version": "4.1.0-next.2", |
1319 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.1.tgz", | 1308 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz", |
1320 | "integrity": "sha512-FzNkvHmg3GXpzZAlnGnpdRbQQX6LDRb0bvc+oxxjMUwIJ66kTO/DyeE2bwU0fsiOEGfsJTCzvjESVl368jZ0/g==" | 1309 | "integrity": "sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==" |
1321 | }, | 1310 | }, |
1322 | "vscode-languageclient": { | 1311 | "vscode-languageclient": { |
1323 | "version": "5.3.0-next.4", | 1312 | "version": "5.3.0-next.6", |
1324 | "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.3.0-next.4.tgz", | 1313 | "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.3.0-next.6.tgz", |
1325 | "integrity": "sha512-RODuzXErVpJRSgHv+Xei8fwQtZ/iZOWPCqlLl07NTtkzgTAepJf9r4EioZVuTviGJ5DEJ9xs0bjrit8shKtW6Q==", | 1314 | "integrity": "sha512-DxT8+gkenjCjJV6ArcP75/AQfx6HP6m6kHIbacPCpffMeoE1YMLKj6ZixA9J87yr0fMtBmqumLmDeGe7MIF2bw==", |
1326 | "requires": { | 1315 | "requires": { |
1327 | "semver": "^5.5.0", | 1316 | "semver": "^5.5.0", |
1328 | "vscode-languageserver-protocol": "3.15.0-next.4" | 1317 | "vscode-languageserver-protocol": "^3.15.0-next.6" |
1329 | } | 1318 | } |
1330 | }, | 1319 | }, |
1331 | "vscode-languageserver-protocol": { | 1320 | "vscode-languageserver-protocol": { |
1332 | "version": "3.15.0-next.4", | 1321 | "version": "3.15.0-next.6", |
1333 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.4.tgz", | 1322 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz", |
1334 | "integrity": "sha512-4AgisQ8GWa3irdRu3/UNr3brcSSm0oobmoV1eSOnV7JM32lYyXDnSKB7RuTTXvaAjD/0xQJLEGhkyGHS5gbywA==", | 1323 | "integrity": "sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==", |
1335 | "requires": { | 1324 | "requires": { |
1336 | "vscode-jsonrpc": "^4.1.0-next.1", | 1325 | "vscode-jsonrpc": "^4.1.0-next.2", |
1337 | "vscode-languageserver-types": "3.15.0-next.1" | 1326 | "vscode-languageserver-types": "^3.15.0-next.2" |
1338 | } | 1327 | } |
1339 | }, | 1328 | }, |
1340 | "vscode-languageserver-types": { | 1329 | "vscode-languageserver-types": { |
1341 | "version": "3.15.0-next.1", | 1330 | "version": "3.15.0-next.2", |
1342 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.1.tgz", | 1331 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz", |
1343 | "integrity": "sha512-R0kzmaI8gOGEoU7b9huYQAzgZzRQ/5Q8HKjsIUdfz0MjXcBZ4tr1ik1So1p1O5kGrI1VTCd22Fw/wI7ECGoIPw==" | 1332 | "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==" |
1344 | }, | 1333 | }, |
1345 | "vscode-test": { | 1334 | "vscode-test": { |
1346 | "version": "0.1.5", | 1335 | "version": "0.4.3", |
1347 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.1.5.tgz", | 1336 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", |
1348 | "integrity": "sha512-s+lbF1Dtasc0yXVB9iQTexBe2JK6HJAUJe3fWezHKIjq+xRw5ZwCMEMBaonFIPy7s95qg2HPTRDR5W4h4kbxGw==", | 1337 | "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", |
1349 | "dev": true, | 1338 | "dev": true, |
1350 | "requires": { | 1339 | "requires": { |
1351 | "http-proxy-agent": "^2.1.0", | 1340 | "http-proxy-agent": "^2.1.0", |
diff --git a/editors/code/package.json b/editors/code/package.json index 060a3a247..808dc5dc1 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -25,7 +25,7 @@ | |||
25 | "lint": "tslint --project .", | 25 | "lint": "tslint --project .", |
26 | "test": "node node_modules/vscode/bin/test", | 26 | "test": "node node_modules/vscode/bin/test", |
27 | "prettier": "prettier **/*.{json,ts}", | 27 | "prettier": "prettier **/*.{json,ts}", |
28 | "travis": "npm run compile && npm run test && npm run lint && npm run prettier -- --check" | 28 | "travis": "npm run compile && npm run test && npm run lint && npm run prettier -- --write && git diff --exit-code" |
29 | }, | 29 | }, |
30 | "prettier": { | 30 | "prettier": { |
31 | "tabWidth": 4, | 31 | "tabWidth": 4, |
@@ -36,16 +36,16 @@ | |||
36 | "vscode-languageclient": "^5.3.0-next.4" | 36 | "vscode-languageclient": "^5.3.0-next.4" |
37 | }, | 37 | }, |
38 | "devDependencies": { | 38 | "devDependencies": { |
39 | "@types/mocha": "^5.2.6", | 39 | "@types/mocha": "^5.2.7", |
40 | "@types/node": "^10.14.5", | 40 | "@types/node": "^10.14.13", |
41 | "@types/seedrandom": "^2.4.28", | 41 | "@types/seedrandom": "^2.4.28", |
42 | "prettier": "^1.17.0", | 42 | "prettier": "^1.18.2", |
43 | "shx": "^0.3.1", | 43 | "shx": "^0.3.1", |
44 | "tslint": "^5.16.0", | 44 | "tslint": "^5.18.0", |
45 | "tslint-config-prettier": "^1.18.0", | 45 | "tslint-config-prettier": "^1.18.0", |
46 | "typescript": "^3.4.4", | 46 | "typescript": "^3.5.3", |
47 | "vsce": "^1.66.0", | 47 | "vsce": "^1.66.0", |
48 | "vscode": "^1.1.33" | 48 | "vscode": "^1.1.35" |
49 | }, | 49 | }, |
50 | "activationEvents": [ | 50 | "activationEvents": [ |
51 | "onLanguage:rust", | 51 | "onLanguage:rust", |
diff --git a/editors/code/src/commands/inlay_hints.ts b/editors/code/src/commands/inlay_hints.ts index 8154af8dc..3ba9da48b 100644 --- a/editors/code/src/commands/inlay_hints.ts +++ b/editors/code/src/commands/inlay_hints.ts | |||
@@ -79,12 +79,17 @@ export class HintsUpdater { | |||
79 | documentUri: string, | 79 | documentUri: string, |
80 | editor: TextEditor | 80 | editor: TextEditor |
81 | ): Promise<void> { | 81 | ): Promise<void> { |
82 | const newHints = (await this.queryHints(documentUri)) || []; | 82 | const newHints = await this.queryHints(documentUri); |
83 | const newDecorations = newHints.map(hint => ({ | 83 | if (newHints != null) { |
84 | range: hint.range, | 84 | const newDecorations = newHints.map(hint => ({ |
85 | renderOptions: { after: { contentText: `: ${hint.label}` } } | 85 | range: hint.range, |
86 | })); | 86 | renderOptions: { after: { contentText: `: ${hint.label}` } } |
87 | return editor.setDecorations(typeHintDecorationType, newDecorations); | 87 | })); |
88 | return editor.setDecorations( | ||
89 | typeHintDecorationType, | ||
90 | newDecorations | ||
91 | ); | ||
92 | } | ||
88 | } | 93 | } |
89 | 94 | ||
90 | private async queryHints(documentUri: string): Promise<InlayHint[] | null> { | 95 | private async queryHints(documentUri: string): Promise<InlayHint[] | null> { |