feat(lsp): add references code lens (#9316)

This commit is contained in:
Kitson Kelly 2021-02-01 14:30:41 +11:00 committed by GitHub
parent 46d5843f75
commit 534531e4dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 738 additions and 152 deletions

View file

@ -1,6 +1,9 @@
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
use crate::normalize_path;
use serde::de;
use serde::Deserialize;
use serde::Deserializer;
use std::env::current_dir;
use std::error::Error;
use std::fmt;
@ -209,9 +212,21 @@ impl PartialEq<String> for ModuleSpecifier {
}
}
impl<'de> Deserialize<'de> for ModuleSpecifier {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let url_str: String = Deserialize::deserialize(deserializer)?;
ModuleSpecifier::resolve_url(&url_str).map_err(de::Error::custom)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::serde_json::from_value;
use crate::serde_json::json;
use std::path::Path;
#[test]
@ -545,4 +560,13 @@ mod tests {
);
}
}
#[test]
fn test_deserialize_module_specifier() {
let actual: ModuleSpecifier =
from_value(json!("http://deno.land/x/mod.ts")).unwrap();
let expected =
ModuleSpecifier::resolve_url("http://deno.land/x/mod.ts").unwrap();
assert_eq!(actual, expected);
}
}