Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions crates/oxc_angular_compiler/src/component/transform.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4316,10 +4316,10 @@ export class LocalService {}
result.code.contains("ɵɵdefineInjectable"),
"Code should contain ɵɵdefineInjectable"
);
// Should default to providedIn: "root" (Angular's default behavior)
// Should NOT have providedIn when not explicitly specified
assert!(
result.code.contains(r#"providedIn:"root""#),
"Code should contain providedIn:\"root\" by default, but got:\n{}",
!result.code.contains("providedIn"),
"Code should NOT contain providedIn when not specified, but got:\n{}",
result.code
);
}
Expand Down
18 changes: 9 additions & 9 deletions crates/oxc_angular_compiler/src/injectable/decorator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,12 @@ pub fn extract_injectable_metadata<'a>(
_ => return None,
};

// If no arguments, return basic metadata with default providedIn: 'root'
// If no arguments, return basic metadata with no providedIn
if call_expr.arguments.is_empty() {
return Some(InjectableMetadata {
class_name,
class_span,
provided_in: Some(ProvidedInValue::Root),
provided_in: None,
use_class: None,
use_factory: None,
use_value: None,
Expand All @@ -250,8 +250,8 @@ pub fn extract_injectable_metadata<'a>(
_ => return None,
};

// Extract providedIn (default to 'root' if not specified)
let provided_in = extract_provided_in(allocator, config_obj).or(Some(ProvidedInValue::Root));
// Extract providedIn (None if not specified)
let provided_in = extract_provided_in(allocator, config_obj);

// Extract useClass
let use_class = extract_use_class(allocator, config_obj);
Expand Down Expand Up @@ -681,8 +681,8 @@ mod tests {
assert!(metadata.is_some());
let metadata = metadata.unwrap();
assert_eq!(metadata.class_name.as_str(), "MyService");
// Default to 'root' when not specified (Angular's default behavior)
assert!(matches!(metadata.provided_in, Some(ProvidedInValue::Root)));
// No providedIn when not specified
assert!(metadata.provided_in.is_none());
}

#[test]
Expand Down Expand Up @@ -715,7 +715,7 @@ mod tests {

#[test]
fn test_extract_injectable_with_empty_object() {
// @Injectable({}) should default to providedIn: 'root'
// @Injectable({}) should have no providedIn
let allocator = Allocator::default();
let source = r#"
@Injectable({})
Expand All @@ -726,8 +726,8 @@ mod tests {
assert!(metadata.is_some());
let metadata = metadata.unwrap();
assert_eq!(metadata.class_name.as_str(), "MyService");
// Default to 'root' when providedIn is not specified in the object
assert!(matches!(metadata.provided_in, Some(ProvidedInValue::Root)));
// No providedIn when not specified in the object
assert!(metadata.provided_in.is_none());
}

#[test]
Expand Down
Loading