From 37e08460377498165f421a522cb4eb1bb4e246b7 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Mon, 31 May 2021 17:19:46 +0200 Subject: [PATCH] Test cases for include and import --- src/loading/fs.rs | 6 +- src/parse/mod.rs | 20 +++-- tests/ref/code/import.png | Bin 0 -> 4148 bytes tests/ref/code/include.png | Bin 0 -> 31098 bytes tests/typ/code/block-scoping.typ | 10 +++ tests/typ/code/import.typ | 119 +++++++++++++++++++++++++++ tests/typ/code/importable/chap1.typ | 9 ++ tests/typ/code/importable/chap2.typ | 11 +++ tests/typ/code/importable/cycle1.typ | 7 ++ tests/typ/code/importable/cycle2.typ | 7 ++ tests/typ/code/include.typ | 23 ++++++ tests/typ/code/target.typ | 12 +++ 12 files changed, 212 insertions(+), 12 deletions(-) create mode 100644 tests/ref/code/import.png create mode 100644 tests/ref/code/include.png create mode 100644 tests/typ/code/import.typ create mode 100644 tests/typ/code/importable/chap1.typ create mode 100644 tests/typ/code/importable/chap2.typ create mode 100644 tests/typ/code/importable/cycle1.typ create mode 100644 tests/typ/code/importable/cycle2.typ create mode 100644 tests/typ/code/include.typ create mode 100644 tests/typ/code/target.typ diff --git a/src/loading/fs.rs b/src/loading/fs.rs index e2654a2e5..a37d96300 100644 --- a/src/loading/fs.rs +++ b/src/loading/fs.rs @@ -194,9 +194,9 @@ fn load(cache: &mut FileCache, path: &Path) -> Option { /// Create a hash that is the same for all paths pointing to the same file. fn hash(path: &Path) -> Option { - 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 9104b9247..5bda818fd 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -563,8 +563,8 @@ fn expr_import(p: &mut Parser) -> Option { 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 { 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 diff --git a/tests/ref/code/import.png b/tests/ref/code/import.png new file mode 100644 index 0000000000000000000000000000000000000000..0a811495529a1fef0e958a76b7d3d380b4c911da GIT binary patch literal 4148 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