From 3f2579c4f32b5af6df714ee301c0752fc4949ba1 Mon Sep 17 00:00:00 2001 From: Chad Stearns Date: Sun, 29 Mar 2020 14:26:25 -0400 Subject: [PATCH] Module name report text variety --- Cargo.lock | 247 +-------------------- compiler/reporting/Cargo.toml | 2 + compiler/reporting/src/report.rs | 13 +- compiler/reporting/tests/helpers/mod.rs | 7 +- compiler/reporting/tests/test_reporting.rs | 27 ++- 5 files changed, 49 insertions(+), 247 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d267054ae3..b3f78979ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,12 +24,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -[[package]] -name = "autocfg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" - [[package]] name = "bitflags" version = "1.2.1" @@ -51,12 +45,6 @@ version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12ae9db68ad7fac5fe51304d20f016c911539251075a214f8e663babefa35187" -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - [[package]] name = "bytes" version = "0.5.4" @@ -84,116 +72,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "cranelift" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177b8570ee9247af35938db95818634ee0b18dce71e7792bac1e4a9f516064ba" -dependencies = [ - "cranelift-codegen", - "cranelift-frontend", -] - -[[package]] -name = "cranelift-bforest" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a9c21f8042b9857bda93f6c1910b9f9f24100187a3d3d52f214a34e3dc5818" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7853f77a6e4a33c67a69c40f5e1bb982bd2dc5c4a22e17e67b65bbccf9b33b2e" -dependencies = [ - "byteorder", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "gimli", - "log", - "smallvec", - "target-lexicon", - "thiserror", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084cd6d5fb0d1da28acd72c199471bfb09acc703ec8f3bf07b1699584272a3b9" -dependencies = [ - "cranelift-codegen-shared", - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701b599783305a58c25027a4d73f2d6b599b2d8ef3f26677275f480b4d51e05d" - -[[package]] -name = "cranelift-entity" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88e792b28e1ebbc0187b72ba5ba880dad083abe9231a99d19604d10c9e73f38" - -[[package]] -name = "cranelift-frontend" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518344698fa6c976d853319218415fdfb4f1bc6b42d0b2e2df652e55dff1f778" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-module" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0308925796ccf4f4facc2e6e782836474126851f7d3db74ee6138d644eea5da5" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "log", - "thiserror", -] - -[[package]] -name = "cranelift-native" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32daf082da21c0c05d93394ff4842c2ab7c4991b1f3186a1d952f8ac660edd0b" -dependencies = [ - "cranelift-codegen", - "raw-cpuid", - "target-lexicon", -] - -[[package]] -name = "cranelift-simplejit" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accb62f74935a3182f2e32a4a9cf880f429122e10b69edcd81fe25ea09e35cdc" -dependencies = [ - "cranelift-codegen", - "cranelift-module", - "cranelift-native", - "errno", - "libc", - "region", - "target-lexicon", - "winapi", -] - [[package]] name = "difference" version = "2.0.0" @@ -216,27 +94,6 @@ dependencies = [ "regex", ] -[[package]] -name = "errno" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" -dependencies = [ - "gcc", - "libc", -] - [[package]] name = "fnv" version = "1.0.6" @@ -249,22 +106,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" - -[[package]] -name = "gimli" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dd6190aad0f05ddbbf3245c54ed14ca4aa6dd32f22312b70d8f168c3e3e633" -dependencies = [ - "byteorder", - "indexmap", -] - [[package]] name = "hermit-abi" version = "0.1.8" @@ -302,15 +143,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "indexmap" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" -dependencies = [ - "autocfg 1.0.0", -] - [[package]] name = "indoc" version = "0.3.4" @@ -407,15 +239,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "mach" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" -dependencies = [ - "libc", -] - [[package]] name = "maplit" version = "1.0.2" @@ -555,7 +378,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7", + "autocfg", "libc", "rand_chacha", "rand_core 0.4.2", @@ -574,7 +397,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7", + "autocfg", "rand_core 0.3.1", ] @@ -648,7 +471,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7", + "autocfg", "rand_core 0.4.2", ] @@ -670,17 +493,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "raw-cpuid" -version = "7.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" -dependencies = [ - "bitflags", - "cc", - "rustc_version", -] - [[package]] name = "rdrand" version = "0.4.0" @@ -714,18 +526,6 @@ version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae" -[[package]] -name = "region" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "448e868c6e4cfddfa49b6a72c95906c04e8547465e9536575b95c70a4044f856" -dependencies = [ - "bitflags", - "libc", - "mach", - "winapi", -] - [[package]] name = "roc_builtins" version = "0.1.0" @@ -819,10 +619,6 @@ name = "roc_gen" version = "0.1.0" dependencies = [ "bumpalo", - "cranelift", - "cranelift-codegen", - "cranelift-module", - "cranelift-simplejit", "im", "im-rc", "indoc", @@ -846,7 +642,6 @@ dependencies = [ "roc_types", "roc_unify", "roc_uniq", - "target-lexicon", "tokio", ] @@ -953,6 +748,7 @@ version = "0.1.0" dependencies = [ "bumpalo", "indoc", + "inlinable_string", "maplit", "pretty_assertions", "quickcheck", @@ -1049,15 +845,6 @@ dependencies = [ "roc_types", ] -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -1117,32 +904,6 @@ dependencies = [ "unicode-xid 0.2.0", ] -[[package]] -name = "target-lexicon" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" - -[[package]] -name = "thiserror" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3711fd1c4e75b3eff12ba5c40dba762b6b65c5476e8174c1a664772060c49bf" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae2b85ba4c9aa32dd3343bd80eb8d22e9b54b7688c17ea3907f236885353b233" -dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.17", -] - [[package]] name = "thread_local" version = "1.0.1" diff --git a/compiler/reporting/Cargo.toml b/compiler/reporting/Cargo.toml index 514933f6d6..5f0a9858d2 100644 --- a/compiler/reporting/Cargo.toml +++ b/compiler/reporting/Cargo.toml @@ -12,6 +12,8 @@ roc_problem = { path = "../problem" } roc_types = { path = "../types" } roc_load = { path = "../load" } roc_can = { path = "../can" } +inlinable_string = "0.1.0" + [dev-dependencies] roc_constrain = { path = "../constrain" } diff --git a/compiler/reporting/src/report.rs b/compiler/reporting/src/report.rs index 685bc76190..28f39ea528 100644 --- a/compiler/reporting/src/report.rs +++ b/compiler/reporting/src/report.rs @@ -1,4 +1,4 @@ -use crate::report::ReportText::{Batch, Region, Value}; +use crate::report::ReportText::{Batch, Module, Region, Value}; use roc_module::symbol::{Interns, ModuleId, Symbol}; use roc_problem::can::Problem; use roc_types::pretty_print::content_to_string; @@ -22,6 +22,7 @@ pub struct Palette { pub error: Color, pub line_number: Color, pub gutter_bar: Color, + pub module_name: Color, } #[derive(Copy, Clone)] @@ -46,6 +47,7 @@ pub const TEST_PALETTE: Palette = Palette { error: Color::Red, line_number: Color::Cyan, gutter_bar: Color::Magenta, + module_name: Color::Green, }; impl Color { @@ -98,6 +100,9 @@ pub enum ReportText { /// A value. Render it qualified unless it was defined in the current module. Value(Symbol), + /// A module, + Module(ModuleId), + /// A type. Render it using roc_types::pretty_print for now, but maybe /// do something fancier later. Type(Content), @@ -237,6 +242,9 @@ impl ReportText { buf.push_str(symbol.ident_string(interns)); } } + Module(module_id) => { + buf.push_str(&module_id.name()); + } Type(content) => buf.push_str(content_to_string(content, subs, home, interns).as_str()), Region(region) => { let max_line_number_length = region.end_line.to_string().len(); @@ -315,6 +323,9 @@ impl ReportText { buf.push_str(&palette.variable.render(&module_str)); } } + Module(module_id) => { + buf.push_str(&palette.module_name.render(&module_id.name())); + } Type(content) => match content { Content::FlexVar(flex_var) => buf.push_str(&palette.flex_var.render( content_to_string(Content::FlexVar(flex_var), subs, home, interns).as_str(), diff --git a/compiler/reporting/tests/helpers/mod.rs b/compiler/reporting/tests/helpers/mod.rs index 9ca85d8c4e..45e0d33886 100644 --- a/compiler/reporting/tests/helpers/mod.rs +++ b/compiler/reporting/tests/helpers/mod.rs @@ -1,6 +1,7 @@ extern crate bumpalo; use self::bumpalo::Bump; +use inlinable_string::InlinableString; use roc_builtins::unique::uniq_stdlib; use roc_can::constraint::Constraint; use roc_can::env::Env; @@ -25,7 +26,11 @@ use std::hash::Hash; use std::path::{Path, PathBuf}; pub fn test_home() -> ModuleId { - ModuleIds::default().get_or_insert(&"Test".into()) + module(&"Test".into()) +} + +pub fn module(name: &InlinableString) -> ModuleId { + ModuleIds::default().get_or_insert(name) } #[allow(dead_code)] diff --git a/compiler/reporting/tests/test_reporting.rs b/compiler/reporting/tests/test_reporting.rs index 64e8582799..b206fe57c3 100644 --- a/compiler/reporting/tests/test_reporting.rs +++ b/compiler/reporting/tests/test_reporting.rs @@ -9,7 +9,7 @@ mod helpers; #[cfg(test)] mod test_report { - use crate::helpers::test_home; + use crate::helpers::{module, test_home}; use roc_module::symbol::{Interns, ModuleId}; use roc_reporting::report::{ can_problem, em_text, plain_text, url, Report, ReportText, BLUE_CODE, BOLD_CODE, CYAN_CODE, @@ -22,7 +22,7 @@ mod test_report { use std::path::PathBuf; // use roc_region::all; use crate::helpers::{can_expr, infer_expr, CanExprOut}; - use roc_reporting::report::ReportText::{Batch, Region, Type, Value}; + use roc_reporting::report::ReportText::{Batch, Module, Region, Type, Value}; use roc_types::subs::Content::{FlexVar, RigidVar, Structure}; use roc_types::subs::FlatType::EmptyRecord; @@ -188,6 +188,29 @@ mod test_report { assert_eq!(buf, "x"); } + #[test] + fn report_module() { + let src: &str = indoc!( + r#" + x = 1 + y = 2 + + x + "# + ); + + let (_type_problems, _can_problems, mut subs, home, interns) = infer_expr_help(src); + + let mut buf = String::new(); + let src_lines: Vec<&str> = src.split('\n').collect(); + + to_simple_report(Module(module(&"Main".into()))) + .text + .render_ci(&mut buf, &mut subs, home, &src_lines, &interns); + + assert_eq!(buf, "Main"); + } + #[test] fn report_wildcard() { report_renders_as(to_simple_report(Type(FlexVar(None))), "*");