mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 01:35:35 +00:00
Bug 1504597 - Use NodeName::to_rc_string. r=Yoric
This commit is contained in:
parent
1fd8fb9353
commit
cbfb4c370e
@ -519,14 +519,6 @@ const INTERFACE_ARGS: &str =
|
||||
const TOPLEVEL_INTERFACE: &str =
|
||||
"Program";
|
||||
|
||||
/// Get Rc<String> from NodeName.
|
||||
///
|
||||
/// FIXME: Do not clone the String itself, but just clone the Rc<String> inside
|
||||
/// NodeName (Bug 1504597).
|
||||
fn string_from_nodename(name: &NodeName) -> Rc<String> {
|
||||
Rc::new(name.to_string().clone())
|
||||
}
|
||||
|
||||
/// The actual exporter.
|
||||
struct CPPExporter {
|
||||
/// The syntax to export.
|
||||
@ -647,7 +639,7 @@ impl CPPExporter {
|
||||
|
||||
let mut edges: HashSet<Rc<String>> = HashSet::new();
|
||||
edges.insert(Rc::new(format!("Sum{}", name)));
|
||||
refgraph.insert(string_from_nodename(name), edges);
|
||||
refgraph.insert(name.to_rc_string().clone(), edges);
|
||||
|
||||
let mut sum_edges: HashSet<Rc<String>> = HashSet::new();
|
||||
for node in nodes {
|
||||
@ -676,7 +668,7 @@ impl CPPExporter {
|
||||
if is_implemented {
|
||||
let mut edges: HashSet<Rc<String>> = HashSet::new();
|
||||
edges.insert(Rc::new(format!("Interface{}", name)));
|
||||
refgraph.insert(string_from_nodename(name), edges);
|
||||
refgraph.insert(name.to_rc_string().clone(), edges);
|
||||
}
|
||||
|
||||
let mut interface_edges: HashSet<Rc<String>> = HashSet::new();
|
||||
@ -705,7 +697,7 @@ impl CPPExporter {
|
||||
|
||||
// 3. String Enums
|
||||
for (kind, _) in self.syntax.string_enums_by_name() {
|
||||
refgraph.insert(string_from_nodename(kind), HashSet::new());
|
||||
refgraph.insert(kind.to_rc_string().clone(), HashSet::new());
|
||||
}
|
||||
|
||||
// 4. Lists
|
||||
@ -720,8 +712,8 @@ impl CPPExporter {
|
||||
}
|
||||
|
||||
let mut edges: HashSet<Rc<String>> = HashSet::new();
|
||||
edges.insert(string_from_nodename(&parser.elements));
|
||||
refgraph.insert(string_from_nodename(name), edges);
|
||||
edges.insert(parser.elements.to_rc_string().clone());
|
||||
refgraph.insert(name.to_rc_string().clone(), edges);
|
||||
}
|
||||
|
||||
// 5. Optional values
|
||||
@ -756,7 +748,7 @@ impl CPPExporter {
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
refgraph.insert(string_from_nodename(&parser.name), edges);
|
||||
refgraph.insert(parser.name.to_rc_string().clone(), edges);
|
||||
}
|
||||
|
||||
// 6. Primitive values.
|
||||
@ -1017,7 +1009,7 @@ enum class BinVariant {
|
||||
buffer.push_str("// Implementations are autogenerated\n");
|
||||
buffer.push_str("// `ParseNode*` may never be nullptr\n");
|
||||
for &(ref name, _) in &sums_of_interfaces {
|
||||
if !self.refgraph.is_used(string_from_nodename(&name)) {
|
||||
if !self.refgraph.is_used(name.to_rc_string().clone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1059,7 +1051,7 @@ enum class BinVariant {
|
||||
let rules_for_this_interface = self.rules.get(name);
|
||||
let extra_params = rules_for_this_interface.extra_params;
|
||||
|
||||
if self.refgraph.is_used(string_from_nodename(name)) {
|
||||
if self.refgraph.is_used(name.to_rc_string().clone()) {
|
||||
let outer = self.get_method_signature(name, "", "", &extra_params);
|
||||
outer_parsers.push(outer.reindent(""));
|
||||
}
|
||||
@ -1092,7 +1084,7 @@ enum class BinVariant {
|
||||
.iter()
|
||||
.sorted_by(|a, b| str::cmp(a.0.to_str(), b.0.to_str()));
|
||||
for (kind, _) in string_enums_by_name {
|
||||
if !self.refgraph.is_used(string_from_nodename(kind)) {
|
||||
if !self.refgraph.is_used(kind.to_rc_string().clone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1106,7 +1098,7 @@ enum class BinVariant {
|
||||
buffer.push_str("\n\n// ----- Lists (by lexicographical order)\n");
|
||||
buffer.push_str("// Implementations are autogenerated\n");
|
||||
for parser in &self.list_parsers_to_generate {
|
||||
if !self.refgraph.is_used(string_from_nodename(&parser.name)) {
|
||||
if !self.refgraph.is_used(parser.name.to_rc_string().clone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1123,7 +1115,7 @@ enum class BinVariant {
|
||||
buffer.push_str("\n\n// ----- Default values (by lexicographical order)\n");
|
||||
buffer.push_str("// Implementations are autogenerated\n");
|
||||
for parser in &self.option_parsers_to_generate {
|
||||
if !self.refgraph.is_used(string_from_nodename(&parser.name)) {
|
||||
if !self.refgraph.is_used(parser.name.to_rc_string().clone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1185,7 +1177,7 @@ impl CPPExporter {
|
||||
.sorted();
|
||||
let kind = name.to_class_cases();
|
||||
|
||||
if self.refgraph.is_used(string_from_nodename(name)) {
|
||||
if self.refgraph.is_used(name.to_rc_string().clone()) {
|
||||
let rendered_bnf = format!("/*\n{name} ::= {nodes}\n*/",
|
||||
nodes = nodes.iter()
|
||||
.format("\n "),
|
||||
@ -1273,7 +1265,7 @@ impl CPPExporter {
|
||||
|
||||
/// Generate the implementation of a single list parser
|
||||
fn generate_implement_list(&self, buffer: &mut String, parser: &ListParserData) {
|
||||
if !self.refgraph.is_used(string_from_nodename(&parser.name)) {
|
||||
if !self.refgraph.is_used(parser.name.to_rc_string().clone()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1366,7 +1358,7 @@ impl CPPExporter {
|
||||
debug!(target: "generate_spidermonkey", "Implementing optional value {} backed by {}",
|
||||
parser.name.to_str(), parser.elements.to_str());
|
||||
|
||||
if !self.refgraph.is_used(string_from_nodename(&parser.name)) {
|
||||
if !self.refgraph.is_used(parser.name.to_rc_string().clone()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1617,7 +1609,7 @@ impl CPPExporter {
|
||||
}
|
||||
}
|
||||
|
||||
if self.refgraph.is_used(string_from_nodename(name)) {
|
||||
if self.refgraph.is_used(name.to_rc_string().clone()) {
|
||||
// Generate comments
|
||||
let comment = format!("\n/*\n{}*/\n", ToWebidl::interface(interface, "", " "));
|
||||
buffer.push_str(&comment);
|
||||
@ -1899,7 +1891,7 @@ impl CPPExporter {
|
||||
.iter()
|
||||
.sorted_by(|a, b| str::cmp(a.0.to_str(), b.0.to_str()));
|
||||
for (kind, enum_) in string_enums_by_name {
|
||||
if !self.refgraph.is_used(string_from_nodename(kind)) {
|
||||
if !self.refgraph.is_used(kind.to_rc_string().clone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user