Module name report text variety

This commit is contained in:
Chad Stearns 2020-03-29 14:26:25 -04:00
parent afb0a08785
commit 3f2579c4f3
5 changed files with 49 additions and 247 deletions

247
Cargo.lock generated
View file

@ -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"

View file

@ -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" }

View file

@ -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(),

View file

@ -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)]

View file

@ -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))), "*");