MCPcopy Create free account
hub / github.com/aspizu/goboscript / _input

Method _input

src/codegen/input.rs:96–132  ·  view source on GitHub ↗
(
        &mut self,
        s: S,
        d: D,
        input_name: &str,
        expr: &Expr,
        this_id: NodeID,
        shadow_id: Option<NodeID>,
    )

Source from the content-addressed store, hash-verified

94 }
95
96 fn _input(
97 &mut self,
98 s: S,
99 d: D,
100 input_name: &str,
101 expr: &Expr,
102 this_id: NodeID,
103 shadow_id: Option<NodeID>,
104 ) -> io::Result<()> {
105 write_comma_io(&mut self.zip, &mut self.inputs_comma)?;
106 write!(self, r#""{input_name}":"#)?;
107 match expr {
108 Expr::Value { value, span: _ } => return self.value_input(input_name, value),
109 Expr::Name(name) => return self.name_input(s, d, input_name, name, shadow_id),
110 Expr::Dot { lhs, rhs, rhs_span } => {
111 if let Expr::Name(lhs_name) = &**lhs {
112 if let Some(enum_) = s.get_enum(lhs_name.basename()) {
113 if let Some(variant) =
114 enum_.variants.iter().find(|variant| &variant.name == rhs)
115 {
116 return self
117 .value_input(input_name, &variant.value.as_ref().unwrap().0);
118 } else {
119 d.report(
120 DiagnosticKind::UnrecognizedEnumVariant(
121 lhs_name.basename().clone(),
122 ),
123 rhs_span,
124 );
125 }
126 }
127 }
128 }
129 _ => {}
130 }
131 self.node_input(input_name, this_id, shadow_id)
132 }
133
134 fn value_input(&mut self, name: &str, value: &Value) -> io::Result<()> {
135 match value {

Callers 2

inputMethod · 0.80
input_with_shadowMethod · 0.80

Calls 7

write_comma_ioFunction · 0.85
value_inputMethod · 0.80
name_inputMethod · 0.80
get_enumMethod · 0.80
basenameMethod · 0.80
reportMethod · 0.80
node_inputMethod · 0.80

Tested by

no test coverage detected