From f65487a1cef1f5c43cde99fc1ae3497935dcecb5 Mon Sep 17 00:00:00 2001
From: nakiwo
Date: Wed, 7 Mar 2018 16:05:06 +0900
Subject: [PATCH] Sort code generation related lists.
---
Sources/DIGenKit/CodeGenerator.swift | 6 +++---
Sources/DIGenKit/Generating/Resolver.swift | 5 +++--
Tests/DIGenKitTests/Example/ABCDTests.swift | 20 ++++++++++----------
Tests/DIGenKitTests/Example/AppTests.swift | 10 +++++-----
4 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/Sources/DIGenKit/CodeGenerator.swift b/Sources/DIGenKit/CodeGenerator.swift
index c14d493..7ac8247 100644
--- a/Sources/DIGenKit/CodeGenerator.swift
+++ b/Sources/DIGenKit/CodeGenerator.swift
@@ -48,8 +48,8 @@ public final class CodeGenerator {
}
context = [
- "moduleNames": imports.map { $0.moduleName },
- "resolvers": resolvers,
+ "moduleNames": imports.map({ $0.moduleName }).sorted(by: <),
+ "resolvers": resolvers.sorted { (lhs, rhs) in return lhs.name < rhs.name },
]
}
@@ -64,7 +64,7 @@ public final class CodeGenerator {
{% endif %}{% endfor %}
{% for resolver in resolvers %}
extension {{ resolver.name }} {
- {% for method in resolver.generatedMethods %}
+ {% for method in resolver.sortedGeneratedMethods %}
func {{ method.name }}({{ method.parametersDeclaration }}) -> {{ method.returnTypeName }} {
{% for line in method.bodyLines %}{{ line }}{% if not forloop.last %}
{% endif %}{% endfor %}
diff --git a/Sources/DIGenKit/Generating/Resolver.swift b/Sources/DIGenKit/Generating/Resolver.swift
index dc7862f..a04efd4 100644
--- a/Sources/DIGenKit/Generating/Resolver.swift
+++ b/Sources/DIGenKit/Generating/Resolver.swift
@@ -41,7 +41,7 @@ struct Resolver {
let resolveMethods: [ResolveMethod]
let injectMethods: [InjectMethod]
- let generatedMethods: [GeneratedMethod]
+ let sortedGeneratedMethods: [GeneratedMethod]
init(type: Type, allTypes: [Type]) throws {
guard
@@ -149,6 +149,7 @@ struct Resolver {
}
injectMethods = nodesForInjectMethods.flatMap(InjectMethod.init(node:))
- generatedMethods = resolveMethods as [GeneratedMethod] + injectMethods as [GeneratedMethod]
+ let generatedMethods = resolveMethods as [GeneratedMethod] + injectMethods as [GeneratedMethod]
+ sortedGeneratedMethods = generatedMethods.sorted { (lhs, rhs) in return lhs.name < rhs.name }
}
}
diff --git a/Tests/DIGenKitTests/Example/ABCDTests.swift b/Tests/DIGenKitTests/Example/ABCDTests.swift
index ff4cf9b..101fe7e 100644
--- a/Tests/DIGenKitTests/Example/ABCDTests.swift
+++ b/Tests/DIGenKitTests/Example/ABCDTests.swift
@@ -59,12 +59,19 @@ final class ABCDTests: XCTestCase {
// Generated by dikitgen.
//
- import XCTest
import DIGenKit
import DIKit
+ import XCTest
extension ABCDResolver {
+ func injectToE(_ e: E) -> Void {
+ let a = resolveA()
+ let c = resolveC()
+ let b = resolveB()
+ e.dependency = E.Dependency(ea: a, ec: c, eb: b)
+ }
+
func resolveA() -> A {
return A(dependency: .init())
}
@@ -74,21 +81,14 @@ final class ABCDTests: XCTestCase {
return B(dependency: .init(ba: a))
}
- func resolveD() -> D {
- return provideD()
- }
-
func resolveC() -> C {
let a = resolveA()
let d = resolveD()
return C.makeInstance(dependency: .init(ca: a, cd: d))
}
- func injectToE(_ e: E) -> Void {
- let a = resolveA()
- let c = resolveC()
- let b = resolveB()
- e.dependency = E.Dependency(ea: a, ec: c, eb: b)
+ func resolveD() -> D {
+ return provideD()
}
}
diff --git a/Tests/DIGenKitTests/Example/AppTests.swift b/Tests/DIGenKitTests/Example/AppTests.swift
index 2184279..ea99461 100644
--- a/Tests/DIGenKitTests/Example/AppTests.swift
+++ b/Tests/DIGenKitTests/Example/AppTests.swift
@@ -45,20 +45,20 @@ final class AppTests: XCTestCase {
// Generated by dikitgen.
//
- import XCTest
import DIGenKit
import DIKit
+ import XCTest
extension AppResolver {
- func resolveAppResolver() -> AppResolver {
- return provideAppResolver()
- }
-
func resolveAPIClient() -> APIClient {
return provideAPIClient()
}
+ func resolveAppResolver() -> AppResolver {
+ return provideAppResolver()
+ }
+
func resolveDetailViewController(index: Int) -> DetailViewController {
let apiClient = resolveAPIClient()
return DetailViewController(dependency: .init(index: index, apiClient: apiClient))