diff --git a/Cargo.lock b/Cargo.lock index 8f3eb5d43..6b8dca984 100644 Binary files a/Cargo.lock and b/Cargo.lock differ diff --git a/cli/Cargo.toml b/cli/Cargo.toml index ad612cfc2..ba5fa148c 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -25,14 +25,13 @@ lazy_static = "1.2.0" smallbitvec = "2.3.0" clap = "2.32" dirs = "1.0.2" -hashbrown = "0.1" libloading = "0.5" once_cell = "0.1.8" serde = "1.0" serde_derive = "1.0" regex-syntax = "0.6.4" regex = "1" -rsass = "^0.9.8" +rsass = "^0.11.0" tiny_http = "0.6" webbrowser = "0.5.1" diff --git a/cli/src/generate/build_tables/build_parse_table.rs b/cli/src/generate/build_tables/build_parse_table.rs index 892fb7a2e..5f7e301b7 100644 --- a/cli/src/generate/build_tables/build_parse_table.rs +++ b/cli/src/generate/build_tables/build_parse_table.rs @@ -11,9 +11,8 @@ use crate::generate::tables::{ ProductionInfo, ProductionInfoId, }; use core::ops::Range; -use hashbrown::hash_map::Entry; -use hashbrown::{HashMap, HashSet}; -use std::collections::{BTreeMap, VecDeque}; +use std::collections::hash_map::Entry; +use std::collections::{BTreeMap, HashMap, HashSet, VecDeque}; use std::fmt::Write; use std::u32; diff --git a/cli/src/generate/build_tables/item_set_builder.rs b/cli/src/generate/build_tables/item_set_builder.rs index 9a929f050..3bed0492f 100644 --- a/cli/src/generate/build_tables/item_set_builder.rs +++ b/cli/src/generate/build_tables/item_set_builder.rs @@ -1,7 +1,7 @@ use super::item::{ParseItem, ParseItemDisplay, ParseItemSet, TokenSet, TokenSetDisplay}; use crate::generate::grammars::{InlinedProductionMap, LexicalGrammar, SyntaxGrammar}; use crate::generate::rules::{Symbol, SymbolType}; -use hashbrown::{HashMap, HashSet}; +use std::collections::{HashMap, HashSet}; use std::fmt; #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/cli/src/generate/build_tables/minimize_parse_table.rs b/cli/src/generate/build_tables/minimize_parse_table.rs index 906ce685c..e01295149 100644 --- a/cli/src/generate/build_tables/minimize_parse_table.rs +++ b/cli/src/generate/build_tables/minimize_parse_table.rs @@ -4,8 +4,8 @@ use crate::generate::dedup::split_state_id_groups; use crate::generate::grammars::{LexicalGrammar, SyntaxGrammar, VariableType}; use crate::generate::rules::{AliasMap, Symbol}; use crate::generate::tables::{ParseAction, ParseState, ParseStateId, ParseTable, ParseTableEntry}; -use hashbrown::{HashMap, HashSet}; use log::info; +use std::collections::{HashMap, HashSet}; use std::mem; pub(crate) fn minimize_parse_table( diff --git a/cli/src/generate/build_tables/token_conflicts.rs b/cli/src/generate/build_tables/token_conflicts.rs index a7737eb3a..71a569e64 100644 --- a/cli/src/generate/build_tables/token_conflicts.rs +++ b/cli/src/generate/build_tables/token_conflicts.rs @@ -1,7 +1,7 @@ use crate::generate::build_tables::item::{TokenSet, TokenSetDisplay}; use crate::generate::grammars::{LexicalGrammar, SyntaxGrammar}; use crate::generate::nfa::{CharacterSet, NfaCursor, NfaTransition}; -use hashbrown::HashSet; +use std::collections::HashSet; use std::cmp::Ordering; use std::fmt; diff --git a/cli/src/generate/grammars.rs b/cli/src/generate/grammars.rs index df22eaffe..0b42c4c32 100644 --- a/cli/src/generate/grammars.rs +++ b/cli/src/generate/grammars.rs @@ -1,6 +1,6 @@ use super::nfa::Nfa; use super::rules::{Alias, Associativity, Rule, Symbol}; -use hashbrown::HashMap; +use std::collections::HashMap; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] pub(crate) enum VariableType { diff --git a/cli/src/generate/node_types.rs b/cli/src/generate/node_types.rs index d5b8c215a..4dab44709 100644 --- a/cli/src/generate/node_types.rs +++ b/cli/src/generate/node_types.rs @@ -4,9 +4,8 @@ use super::grammars::{ }; use super::rules::{Alias, AliasMap, Symbol, SymbolType}; use crate::error::{Error, Result}; -use hashbrown::HashMap; use serde_derive::Serialize; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashMap}; use std::mem; #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] diff --git a/cli/src/generate/prepare_grammar/expand_repeats.rs b/cli/src/generate/prepare_grammar/expand_repeats.rs index 66f064166..ccc83d978 100644 --- a/cli/src/generate/prepare_grammar/expand_repeats.rs +++ b/cli/src/generate/prepare_grammar/expand_repeats.rs @@ -1,7 +1,7 @@ use super::ExtractedSyntaxGrammar; use crate::generate::grammars::{Variable, VariableType}; use crate::generate::rules::{Rule, Symbol}; -use hashbrown::HashMap; +use std::collections::HashMap; use std::mem; struct Expander { diff --git a/cli/src/generate/prepare_grammar/extract_tokens.rs b/cli/src/generate/prepare_grammar/extract_tokens.rs index 01b4584c2..def35b972 100644 --- a/cli/src/generate/prepare_grammar/extract_tokens.rs +++ b/cli/src/generate/prepare_grammar/extract_tokens.rs @@ -2,7 +2,7 @@ use super::{ExtractedLexicalGrammar, ExtractedSyntaxGrammar, InternedGrammar}; use crate::error::{Error, Result}; use crate::generate::grammars::{ExternalToken, Variable, VariableType}; use crate::generate::rules::{MetadataParams, Rule, Symbol, SymbolType}; -use hashbrown::HashMap; +use std::collections::HashMap; use std::mem; pub(super) fn extract_tokens( diff --git a/cli/src/generate/prepare_grammar/process_inlines.rs b/cli/src/generate/prepare_grammar/process_inlines.rs index e7c1b3e8b..685684199 100644 --- a/cli/src/generate/prepare_grammar/process_inlines.rs +++ b/cli/src/generate/prepare_grammar/process_inlines.rs @@ -1,5 +1,5 @@ use crate::generate::grammars::{InlinedProductionMap, Production, ProductionStep, SyntaxGrammar}; -use hashbrown::HashMap; +use std::collections::HashMap; #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] struct ProductionStepId { diff --git a/cli/src/generate/properties.rs b/cli/src/generate/properties.rs index 77fa29e1f..a5532a414 100644 --- a/cli/src/generate/properties.rs +++ b/cli/src/generate/properties.rs @@ -656,7 +656,13 @@ pub(crate) fn generate_property_sheet( fn parse_property_sheet(path: &Path, css: &str) -> Result> { let mut schema_paths = Vec::new(); - let mut items = rsass::parse_scss_data(css.as_bytes())?; + let css = css.as_bytes(); + let mut items = rsass::parse_scss_data(css).map_err(|(pos, kind)| rsass::Error::ParseError { + file: path.to_string_lossy().into(), + pos: rsass::ErrPos::pos_of(pos, &css), + kind, + })?; + process_at_rules(&mut items, &mut schema_paths, path)?; let mut result = Vec::new(); let selector_prefixes = vec![Vec::new()]; diff --git a/cli/src/generate/render.rs b/cli/src/generate/render.rs index 24fcec205..438fcf836 100644 --- a/cli/src/generate/render.rs +++ b/cli/src/generate/render.rs @@ -5,7 +5,7 @@ use super::tables::{ AdvanceAction, FieldLocation, LexState, LexTable, ParseAction, ParseTable, ParseTableEntry, }; use core::ops::Range; -use hashbrown::{HashMap, HashSet}; +use std::collections::{HashMap, HashSet}; use std::fmt::Write; use std::mem::swap; use tree_sitter::LANGUAGE_VERSION; diff --git a/cli/src/generate/rules.rs b/cli/src/generate/rules.rs index 174e06e53..82655d260 100644 --- a/cli/src/generate/rules.rs +++ b/cli/src/generate/rules.rs @@ -1,4 +1,4 @@ -use hashbrown::HashMap; +use std::collections::HashMap; #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] pub(crate) enum SymbolType { diff --git a/cli/src/generate/tables.rs b/cli/src/generate/tables.rs index 75fb7710d..81b31493a 100644 --- a/cli/src/generate/tables.rs +++ b/cli/src/generate/tables.rs @@ -1,7 +1,6 @@ use super::nfa::CharacterSet; use super::rules::{Alias, Associativity, Symbol}; -use hashbrown::HashMap; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashMap}; pub(crate) type ProductionInfoId = usize; pub(crate) type ParseStateId = usize;