Fork of daniellemaywood.uk/gleam — Wasm codegen work
2

Configure Feed

Select the types of activity you want to include in your feed.

Remove LocalConstant variant of ValueConstructor

author
Gears
committer
Louis Pilfold
date (Dec 24, 2025, 3:04 PM UTC) commit 5474f668 parent a8570896 change-id okpyqtmv
+14 -89
+1 -1
compiler-core/src/analyse/imports.rs
··· 220 220 ReferenceKind::Import, 221 221 ); 222 222 } 223 - _ => {} 223 + ValueConstructorVariant::LocalVariable { .. } => {} 224 224 }; 225 225 226 226 // Check if value already was imported
+1 -2
compiler-core/src/erlang.rs
··· 1421 1421 1422 1422 ValueConstructorVariant::LocalVariable { .. } => env.local_var_name(name), 1423 1423 1424 - ValueConstructorVariant::ModuleConstant { literal, .. } 1425 - | ValueConstructorVariant::LocalConstant { literal } => const_inline(literal, env), 1424 + ValueConstructorVariant::ModuleConstant { literal, .. } => const_inline(literal, env), 1426 1425 1427 1426 ValueConstructorVariant::ModuleFn { 1428 1427 arity,
+1 -5
compiler-core/src/inline.rs
··· 537 537 } 538 538 } 539 539 ValueConstructorVariant::ModuleConstant { .. } 540 - | ValueConstructorVariant::LocalConstant { .. } 541 540 | ValueConstructorVariant::ModuleFn { .. } 542 541 | ValueConstructorVariant::Record { .. } => expression, 543 542 }, ··· 861 860 // function calls, so they also cannot be inlined. 862 861 ValueConstructorVariant::LocalVariable { .. } 863 862 | ValueConstructorVariant::ModuleConstant { .. } 864 - | ValueConstructorVariant::LocalConstant { .. } 865 863 | ValueConstructorVariant::Record { .. } => function, 866 864 }, 867 865 TypedExpr::ModuleSelect { ··· 1587 1585 } 1588 1586 } 1589 1587 ValueConstructorVariant::ModuleConstant { .. } 1590 - | ValueConstructorVariant::LocalConstant { .. } 1591 1588 | ValueConstructorVariant::ModuleFn { .. } 1592 1589 | ValueConstructorVariant::Record { .. } => {} 1593 1590 } ··· 1691 1688 ValueConstructorVariant::LocalVariable { .. } => { 1692 1689 Some(InlinableValueConstructor::LocalVariable) 1693 1690 } 1694 - ValueConstructorVariant::ModuleConstant { .. } 1695 - | ValueConstructorVariant::LocalConstant { .. } => None, 1691 + ValueConstructorVariant::ModuleConstant { .. } => None, 1696 1692 ValueConstructorVariant::ModuleFn { name, module, .. } => { 1697 1693 Some(InlinableValueConstructor::Function { 1698 1694 name: name.clone(),
-3
compiler-core/src/javascript/expression.rs
··· 677 677 678 678 fn variable(&mut self, name: &'a EcoString, constructor: &'a ValueConstructor) -> Document<'a> { 679 679 match &constructor.variant { 680 - ValueConstructorVariant::LocalConstant { literal } => { 681 - self.constant_expression(Context::Function, literal) 682 - } 683 680 ValueConstructorVariant::Record { arity, .. } => { 684 681 let type_ = constructor.type_.clone(); 685 682 let tracker = &mut self.tracker;
+3 -6
compiler-core/src/language_server/code_action.rs
··· 2140 2140 | type_::ValueConstructorVariant::ModuleFn { module, .. } 2141 2141 | type_::ValueConstructorVariant::Record { module, .. } => Some(module), 2142 2142 2143 - type_::ValueConstructorVariant::LocalVariable { .. } 2144 - | type_::ValueConstructorVariant::LocalConstant { .. } => None, 2143 + type_::ValueConstructorVariant::LocalVariable { .. } => None, 2145 2144 } 2146 2145 { 2147 2146 self.get_module_import_from_value_constructor(module_name, name); ··· 2205 2204 | type_::ValueConstructorVariant::ModuleFn { module, .. } 2206 2205 | type_::ValueConstructorVariant::Record { module, .. } => Some(module), 2207 2206 2208 - type_::ValueConstructorVariant::LocalVariable { .. } 2209 - | type_::ValueConstructorVariant::LocalConstant { .. } => None, 2207 + type_::ValueConstructorVariant::LocalVariable { .. } => None, 2210 2208 } 2211 2209 { 2212 2210 self.get_module_import_from_value_constructor(module_name, name); ··· 2243 2241 | type_::ValueConstructorVariant::ModuleFn { module, .. } 2244 2242 | type_::ValueConstructorVariant::Record { module, .. } => Some(module), 2245 2243 2246 - type_::ValueConstructorVariant::LocalVariable { .. } 2247 - | type_::ValueConstructorVariant::LocalConstant { .. } => None, 2244 + type_::ValueConstructorVariant::LocalVariable { .. } => None, 2248 2245 } 2249 2246 { 2250 2247 self.get_module_import_from_value_constructor(module_name, name);
-1
compiler-core/src/language_server/completer.rs
··· 914 914 let kind = Some(match value.variant { 915 915 ValueConstructorVariant::LocalVariable { .. } => CompletionItemKind::VARIABLE, 916 916 ValueConstructorVariant::ModuleConstant { .. } => CompletionItemKind::CONSTANT, 917 - ValueConstructorVariant::LocalConstant { .. } => CompletionItemKind::CONSTANT, 918 917 ValueConstructorVariant::ModuleFn { .. } => CompletionItemKind::FUNCTION, 919 918 ValueConstructorVariant::Record { arity: 0, .. } => CompletionItemKind::ENUM_MEMBER, 920 919 ValueConstructorVariant::Record { .. } => CompletionItemKind::CONSTRUCTOR,
-4
compiler-core/src/metadata/module_encoder.rs
··· 413 413 panic!("Unexpected local variable value constructor in module interface",) 414 414 } 415 415 416 - ValueConstructorVariant::LocalConstant { .. } => { 417 - panic!("Unexpected local constant value constructor in module interface",) 418 - } 419 - 420 416 ValueConstructorVariant::ModuleConstant { 421 417 literal, 422 418 location,
+2 -24
compiler-core/src/type_.rs
··· 710 710 implementations: Implementations, 711 711 }, 712 712 713 - /// A constant defined locally, for example when pattern matching on string literals 714 - LocalConstant { 715 - literal: Constant<Arc<Type>, EcoString>, 716 - }, 717 - 718 713 /// A function belonging to the module 719 714 ModuleFn { 720 715 name: EcoString, ··· 780 775 documentation: documentation.clone(), 781 776 }, 782 777 783 - Self::LocalConstant { literal } => ModuleValueConstructor::Constant { 784 - literal: literal.clone(), 785 - location: literal.location(), 786 - documentation: None, 787 - }, 788 - 789 778 Self::LocalVariable { location, .. } => ModuleValueConstructor::Fn { 790 779 name: function_name.clone(), 791 780 module: module_name.clone(), ··· 826 815 | ValueConstructorVariant::ModuleConstant { location, .. } 827 816 | ValueConstructorVariant::ModuleFn { location, .. } 828 817 | ValueConstructorVariant::Record { location, .. } => *location, 829 - ValueConstructorVariant::LocalConstant { literal } => literal.location(), 830 818 } 831 819 } 832 820 ··· 843 831 matches!(origin.syntax, VariableSyntax::Generated) 844 832 } 845 833 ValueConstructorVariant::ModuleConstant { .. } 846 - | ValueConstructorVariant::LocalConstant { .. } 847 834 | ValueConstructorVariant::ModuleFn { .. } 848 835 | ValueConstructorVariant::Record { .. } => false, 849 836 } ··· 867 854 pub fn implementations(&self) -> Implementations { 868 855 match self { 869 856 ValueConstructorVariant::Record { .. } 870 - | ValueConstructorVariant::LocalConstant { .. } 871 857 | ValueConstructorVariant::LocalVariable { .. } => Implementations { 872 858 gleam: true, 873 859 can_run_on_erlang: true, ··· 889 875 match self { 890 876 ValueConstructorVariant::LocalVariable { .. } 891 877 | ValueConstructorVariant::ModuleConstant { .. } 892 - | ValueConstructorVariant::LocalConstant { .. } 893 878 | ValueConstructorVariant::ModuleFn { .. } => None, 894 879 ValueConstructorVariant::Record { field_map, .. } => field_map.as_ref(), 895 880 } ··· 1441 1426 span: *location, 1442 1427 }, 1443 1428 1444 - ValueConstructorVariant::LocalConstant { literal } => DefinitionLocation { 1445 - module: None, 1446 - span: literal.location(), 1447 - }, 1448 - 1449 1429 ValueConstructorVariant::LocalVariable { location, .. } => DefinitionLocation { 1450 1430 module: None, 1451 1431 span: *location, ··· 1455 1435 1456 1436 pub(crate) fn get_documentation(&self) -> Option<&str> { 1457 1437 match &self.variant { 1458 - ValueConstructorVariant::LocalConstant { .. } 1459 - | ValueConstructorVariant::LocalVariable { .. } => Some("A locally defined variable."), 1438 + ValueConstructorVariant::LocalVariable { .. } => Some("A locally defined variable."), 1460 1439 1461 1440 ValueConstructorVariant::ModuleFn { documentation, .. } 1462 1441 | ValueConstructorVariant::Record { documentation, .. } ··· 1490 1469 // `Purity::Unknown`. See the documentation for the `Purity` type 1491 1470 // for more information on why this is the case. 1492 1471 ValueConstructorVariant::LocalVariable { .. } 1493 - | ValueConstructorVariant::ModuleConstant { .. } 1494 - | ValueConstructorVariant::LocalConstant { .. } => Purity::Unknown, 1472 + | ValueConstructorVariant::ModuleConstant { .. } => Purity::Unknown, 1495 1473 1496 1474 // Constructing records is always pure 1497 1475 ValueConstructorVariant::Record { .. } => Purity::Pure,
-19
compiler-core/src/type_/environment.rs
··· 286 286 ); 287 287 } 288 288 289 - /// Insert a constant in the current scope 290 - pub fn insert_local_constant( 291 - &mut self, 292 - name: EcoString, 293 - literal: Constant<Arc<Type>, EcoString>, 294 - ) { 295 - let _ = self.scope.insert( 296 - name, 297 - ValueConstructor { 298 - deprecation: Deprecation::NotDeprecated, 299 - publicity: Publicity::Private, 300 - variant: ValueConstructorVariant::LocalConstant { 301 - literal: literal.clone(), 302 - }, 303 - type_: literal.type_(), 304 - }, 305 - ); 306 - } 307 - 308 289 /// Insert a variable in the current scope. 309 290 /// 310 291 pub fn insert_variable(
+6 -22
compiler-core/src/type_/expression.rs
··· 1274 1274 implementations, .. 1275 1275 } => implementations, 1276 1276 ValueConstructorVariant::Record { .. } 1277 - | ValueConstructorVariant::LocalVariable { .. } 1278 - | ValueConstructorVariant::LocalConstant { .. } => return Ok(()), 1277 + | ValueConstructorVariant::LocalVariable { .. } => return Ok(()), 1279 1278 }; 1280 1279 1281 1280 self.implementations ··· 2386 2385 return Err(Error::NonLocalClauseGuardVariable { location, name }); 2387 2386 } 2388 2387 2389 - ValueConstructorVariant::ModuleConstant { literal, .. } 2390 - | ValueConstructorVariant::LocalConstant { literal } => { 2388 + ValueConstructorVariant::ModuleConstant { literal, .. } => { 2391 2389 return Ok(ClauseGuard::Constant(literal.clone())); 2392 2390 } 2393 2391 }; ··· 3027 3025 3028 3026 variant @ (ValueConstructorVariant::LocalVariable { .. } 3029 3027 | ValueConstructorVariant::ModuleConstant { .. } 3030 - | ValueConstructorVariant::LocalConstant { .. } 3031 3028 | ValueConstructorVariant::Record { .. }) => { 3032 3029 variant.to_module_value_constructor(Arc::clone(&type_), &module_name, &label) 3033 3030 } ··· 3833 3830 ValueConstructorVariant::LocalVariable { .. } => { 3834 3831 self.environment.increment_usage(referenced_name) 3835 3832 } 3836 - ValueConstructorVariant::LocalConstant { .. } => {} 3837 3833 } 3838 3834 } 3839 3835 ··· 3964 3960 return self.new_invalid_constant(location); 3965 3961 } 3966 3962 3967 - ValueConstructorVariant::ModuleConstant { literal, .. } 3968 - | ValueConstructorVariant::LocalConstant { literal } => { 3963 + ValueConstructorVariant::ModuleConstant { literal, .. } => { 3969 3964 return literal.clone(); 3970 3965 } 3971 3966 }; ··· 3996 3991 constructor: Some(value_constructor), 3997 3992 .. 3998 3993 } => match &value_constructor.variant { 3999 - ValueConstructorVariant::LocalConstant { literal } 4000 - | ValueConstructorVariant::ModuleConstant { literal, .. } => { 4001 - literal.clone() 4002 - } 3994 + ValueConstructorVariant::ModuleConstant { literal, .. } => literal.clone(), 4003 3995 _ => typed_record, 4004 3996 }, 4005 3997 _ => typed_record, ··· 4185 4177 } 4186 4178 4187 4179 // TODO: remove this clone. Could use an rc instead 4188 - ValueConstructorVariant::ModuleConstant { literal, .. } 4189 - | ValueConstructorVariant::LocalConstant { literal } => { 4180 + ValueConstructorVariant::ModuleConstant { literal, .. } => { 4190 4181 return literal.clone(); 4191 4182 } 4192 4183 }; ··· 4241 4232 } 4242 4233 4243 4234 // TODO: remove this clone. Could be an rc instead 4244 - ValueConstructorVariant::ModuleConstant { literal, .. } 4245 - | ValueConstructorVariant::LocalConstant { literal } => { 4235 + ValueConstructorVariant::ModuleConstant { literal, .. } => { 4246 4236 return literal.clone(); 4247 4237 } 4248 4238 }; ··· 4407 4397 4408 4398 match constructor.variant { 4409 4399 ValueConstructorVariant::ModuleConstant { .. } 4410 - | ValueConstructorVariant::LocalConstant { .. } 4411 4400 | ValueConstructorVariant::ModuleFn { .. } 4412 4401 | ValueConstructorVariant::LocalVariable { .. } => Constant::Var { 4413 4402 location, ··· 5695 5684 ValueConstructorVariant::ModuleConstant { .. }, 5696 5685 ValueConstructorVariant::ModuleConstant { .. }, 5697 5686 ) 5698 - | ( 5699 - ValueConstructorVariant::LocalConstant { .. }, 5700 - ValueConstructorVariant::LocalConstant { .. }, 5701 - ) 5702 5687 | (ValueConstructorVariant::Record { .. }, ValueConstructorVariant::Record { .. }) 5703 5688 if one == other => 5704 5689 { ··· 5719 5704 ( 5720 5705 ValueConstructorVariant::LocalVariable { .. } 5721 5706 | ValueConstructorVariant::ModuleConstant { .. } 5722 - | ValueConstructorVariant::LocalConstant { .. } 5723 5707 | ValueConstructorVariant::ModuleFn { .. } 5724 5708 | ValueConstructorVariant::Record { .. }, 5725 5709 _,
-2
compiler-core/src/type_/pattern.rs
··· 218 218 let origin = match &variable.variant { 219 219 ValueConstructorVariant::LocalVariable { origin, .. } => origin.clone(), 220 220 ValueConstructorVariant::ModuleConstant { .. } 221 - | ValueConstructorVariant::LocalConstant { .. } 222 221 | ValueConstructorVariant::ModuleFn { .. } 223 222 | ValueConstructorVariant::Record { .. } => VariableOrigin::generated(), 224 223 }; ··· 1078 1077 constructor 1079 1078 } 1080 1079 ValueConstructorVariant::LocalVariable { .. } 1081 - | ValueConstructorVariant::LocalConstant { .. } 1082 1080 | ValueConstructorVariant::ModuleConstant { .. } 1083 1081 | ValueConstructorVariant::ModuleFn { .. } => { 1084 1082 panic!("Unexpected value constructor type for a constructor pattern.")