Autoformat code

This commit is contained in:
Mike Bierlee 2023-03-07 00:46:07 +03:00
parent dfac28102e
commit b8caa00be1
2 changed files with 45 additions and 29 deletions

View file

@ -140,7 +140,7 @@ public void autowire(Type)(shared(DependencyContainer) container, Type instance)
}
private void printDebugAutowiringCandidate(TypeInfo candidateInstanceType,
void* candidateInstanceAddress, TypeInfo instanceType, void* instanceAddress, string member)
void* candidateInstanceAddress, TypeInfo instanceType, void* instanceAddress, string member)
{
debug
{
@ -150,7 +150,7 @@ private void printDebugAutowiringCandidate(TypeInfo candidateInstanceType,
}
private void printDebugAutowiringArray(TypeInfo superTypeInfo,
TypeInfo instanceType, void* instanceAddress, string member)
TypeInfo instanceType, void* instanceAddress, string member)
{
debug
{
@ -160,7 +160,7 @@ private void printDebugAutowiringArray(TypeInfo superTypeInfo,
}
private void autowireMember(string member, size_t memberIndex, Type)(
shared(DependencyContainer) container, Type instance)
shared(DependencyContainer) container, Type instance)
{
foreach (attribute; __traits(getAttributes, Type.tupleof[memberIndex]))
{
@ -186,7 +186,7 @@ private void autowireMember(string member, size_t memberIndex, Type)(
}
private void injectInstance(string member, size_t memberIndex, QualifierType, Type)(
shared(DependencyContainer) container, Type instance)
shared(DependencyContainer) container, Type instance)
{
if (instance.tupleof[memberIndex] is null)
{
@ -196,18 +196,18 @@ private void injectInstance(string member, size_t memberIndex, QualifierType, Ty
static if (isDynamicArray!MemberType)
{
injectMultipleInstances!(member, memberIndex, isOptional, MemberType)(container,
instance);
instance);
}
else
{
injectSingleInstance!(member, memberIndex, isOptional, MemberType, QualifierType)(container,
instance);
instance);
}
}
}
private void injectMultipleInstances(string member, size_t memberIndex,
bool isOptional, MemberType, Type)(shared(DependencyContainer) container, Type instance)
bool isOptional, MemberType, Type)(shared(DependencyContainer) container, Type instance)
{
alias MemberElementType = ElementType!MemberType;
static if (isOptional)
@ -227,8 +227,8 @@ private void injectMultipleInstances(string member, size_t memberIndex,
}
private void injectSingleInstance(string member, size_t memberIndex,
bool isOptional, MemberType, QualifierType, Type)(
shared(DependencyContainer) container, Type instance)
bool isOptional, MemberType, QualifierType, Type)(
shared(DependencyContainer) container, Type instance)
{
debug (poodinisVerbose)
{
@ -241,7 +241,7 @@ private void injectSingleInstance(string member, size_t memberIndex,
static if (!is(QualifierType == UseMemberType))
{
qualifiedInstance = createOrResolveInstance!(MemberType, QualifierType,
assignNewInstance, isOptional)(container);
assignNewInstance, isOptional)(container);
debug (poodinisVerbose)
{
qualifiedInstanceType = typeid(QualifierType);
@ -250,7 +250,7 @@ private void injectSingleInstance(string member, size_t memberIndex,
else
{
qualifiedInstance = createOrResolveInstance!(MemberType, MemberType,
assignNewInstance, isOptional)(container);
assignNewInstance, isOptional)(container);
}
instance.tupleof[memberIndex] = qualifiedInstance;
@ -258,18 +258,18 @@ private void injectSingleInstance(string member, size_t memberIndex,
debug (poodinisVerbose)
{
printDebugAutowiringCandidate(qualifiedInstanceType,
&qualifiedInstance, typeid(Type), &instance, member);
&qualifiedInstance, typeid(Type), &instance, member);
}
}
private QualifierType createOrResolveInstance(MemberType, QualifierType,
bool createNew, bool isOptional)(shared(DependencyContainer) container)
bool createNew, bool isOptional)(shared(DependencyContainer) container)
{
static if (createNew)
{
auto instanceFactory = new InstanceFactory();
instanceFactory.factoryParameters = InstanceFactoryParameters(typeid(MemberType),
CreatesSingleton.no);
CreatesSingleton.no);
return cast(MemberType) instanceFactory.getInstance();
}
else
@ -286,7 +286,7 @@ private QualifierType createOrResolveInstance(MemberType, QualifierType,
}
private void injectValue(string member, size_t memberIndex, string key, bool mandatory, Type)(
shared(DependencyContainer) container, Type instance)
shared(DependencyContainer) container, Type instance)
{
alias MemberType = typeof(Type.tupleof[memberIndex]);
try
@ -315,7 +315,7 @@ private void injectValue(string member, size_t memberIndex, string key, bool man
}
private void printDebugValueInjection(TypeInfo instanceType,
void* instanceAddress, string member, TypeInfo valueType, string key)
void* instanceAddress, string member, TypeInfo valueType, string key)
{
debug
{
@ -340,16 +340,16 @@ class AutowiredRegistration(RegistrationType : Object) : Registration
private shared(DependencyContainer) container;
public this(TypeInfo registeredType, InstanceFactory instanceFactory,
shared(DependencyContainer) originatingContainer)
shared(DependencyContainer) originatingContainer)
{
super(registeredType, typeid(RegistrationType), instanceFactory, originatingContainer);
}
public override Object getInstance(
InstantiationContext context = new AutowireInstantiationContext())
InstantiationContext context = new AutowireInstantiationContext())
{
enforce(!(originatingContainer is null),
"The registration's originating container is null. There is no way to resolve autowire dependencies.");
"The registration's originating container is null. There is no way to resolve autowire dependencies.");
RegistrationType instance = cast(RegistrationType) super.getInstance(context);

View file

@ -41,7 +41,7 @@ version (unittest)
auto componentD = new ComponentD();
container.autowire(componentD);
assert(componentD.privateComponentC is componentD.componentC,
"Autowire private dependency failed");
"Autowire private dependency failed");
}
// Test autowiring will only happen once
@ -55,7 +55,7 @@ version (unittest)
container.autowire(componentD);
auto actualComponent = componentD.componentC;
assert(expectedComponent is actualComponent,
"Autowiring the second time wired a different instance");
"Autowiring the second time wired a different instance");
}
// Test autowiring unregistered type
@ -64,7 +64,7 @@ version (unittest)
auto container = new shared DependencyContainer();
auto componentD = new ComponentD();
assertThrown!(ResolveException)(container.autowire(componentD),
"Autowiring unregistered type should throw ResolveException");
"Autowiring unregistered type should throw ResolveException");
}
// Test autowiring member with non-autowire attribute does not autowire
@ -74,7 +74,7 @@ version (unittest)
auto componentE = new ComponentE();
container.autowire(componentE);
assert(componentE.componentC is null,
"Autowiring should not occur for members with attributes other than @Autowire");
"Autowiring should not occur for members with attributes other than @Autowire");
}
// Test autowire class with alias declaration
@ -87,7 +87,7 @@ version (unittest)
container.autowire(componentDeclarationCocktail);
assert(componentDeclarationCocktail.componentA !is null,
"Autowiring class with non-assignable declarations failed");
"Autowiring class with non-assignable declarations failed");
}
// Test autowire class with qualifier
@ -117,9 +117,9 @@ version (unittest)
container.autowire(bootstrapBootstrap);
assert(bootstrapBootstrap.componentX is componentX,
"Autowiring class with multiple qualifiers failed");
"Autowiring class with multiple qualifiers failed");
assert(bootstrapBootstrap.componentC is componentC,
"Autowiring class with multiple qualifiers failed");
"Autowiring class with multiple qualifiers failed");
}
// Test getting instance from autowired registration will autowire instance
@ -129,9 +129,9 @@ version (unittest)
container.register!ComponentA;
auto registration = new AutowiredRegistration!ComponentB(typeid(ComponentB),
new InstanceFactory(), container).initializeFactoryType().singleInstance();
new InstanceFactory(), container).initializeFactoryType().singleInstance();
auto instance = cast(ComponentB) registration.getInstance(
new AutowireInstantiationContext());
new AutowireInstantiationContext());
assert(instance.componentA !is null);
}
@ -161,7 +161,7 @@ version (unittest)
container.autowire(charlie);
assert(charlie.componentA !is regularComponentA,
"Autowiring class with AssignNewInstance did not yield a different instance");
"Autowiring class with AssignNewInstance did not yield a different instance");
}
// Test autowiring members from base class
@ -222,4 +222,20 @@ version (unittest)
assert(componentA.instance is componentB);
assert(componentB.instance is componentA);
}
// Test autowiring class where a method is marked with @Autowire does nothing
unittest
{
// It should also not show deprecation warning:
// Deprecation: `__traits(getAttributes)` may only be used for individual functions, not overload sets such as: `lala`
// the result of `__traits(getOverloads)` may be used to select the desired function to extract attributes from
auto container = new shared DependencyContainer();
container.register!AutowiredMethod;
auto instance = container.resolve!AutowiredMethod;
assert(instance !is null);
assert(instance.lala == 42);
assert(instance.lala(77) == 77);
}
}