summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/loading/fs.rs6
-rw-r--r--src/parse/mod.rs20
2 files changed, 14 insertions, 12 deletions
diff --git a/src/loading/fs.rs b/src/loading/fs.rs
index e2654a2e..a37d9630 100644
--- a/src/loading/fs.rs
+++ b/src/loading/fs.rs
@@ -194,9 +194,9 @@ fn load(cache: &mut FileCache, path: &Path) -> Option<Buffer> {
/// Create a hash that is the same for all paths pointing to the same file.
fn hash(path: &Path) -> Option<FileHash> {
- Handle::from_path(path)
- .map(|handle| FileHash(fxhash::hash64(&handle)))
- .ok()
+ let file = File::open(path).ok()?;
+ let handle = Handle::from_file(file).ok()?;
+ Some(FileHash(fxhash::hash64(&handle)))
}
#[cfg(test)]
diff --git a/src/parse/mod.rs b/src/parse/mod.rs
index 9104b924..5bda818f 100644
--- a/src/parse/mod.rs
+++ b/src/parse/mod.rs
@@ -563,8 +563,8 @@ fn expr_import(p: &mut Parser) -> Option<Expr> {
let mut expr_import = None;
if let Some(path) = expr(p) {
- if p.expect(Token::Using) {
- let imports = if p.eat_if(Token::Star) {
+ let imports = if p.expect(Token::Using) {
+ if p.eat_if(Token::Star) {
// This is the wildcard scenario.
Imports::Wildcard
} else {
@@ -578,14 +578,16 @@ fn expr_import(p: &mut Parser) -> Option<Expr> {
let idents = idents(p, items);
p.end_group();
Imports::Idents(idents)
- };
+ }
+ } else {
+ Imports::Idents(vec![])
+ };
- expr_import = Some(Expr::Import(ImportExpr {
- span: p.span(start),
- imports,
- path: Box::new(path),
- }));
- }
+ expr_import = Some(Expr::Import(ImportExpr {
+ span: p.span(start),
+ imports,
+ path: Box::new(path),
+ }));
}
expr_import