├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── ci.yml │ └── format.yml ├── .gitignore ├── .mailmap ├── .spi.yml ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── Examples ├── Package.swift ├── Package@swift-6.0.swift ├── README.md ├── Sources │ ├── AccessLevels.swift │ ├── Polymorphism.swift │ └── ViewModel.swift └── Tests │ ├── PolymorphismManualTest.swift │ ├── PolymorphismTests.swift │ └── ViewModelTests.swift ├── LICENSE ├── NAMING_CONVENTION.md ├── Package.swift ├── Package@swift-6.0.swift ├── README.md ├── Sources ├── Spyable │ ├── Documentation.docc │ │ └── Examples.md │ └── Spyable.swift └── SpyableMacro │ ├── Diagnostics │ ├── SpyableDiagnostic.swift │ └── SpyableNoteMessage.swift │ ├── Extensions │ ├── FunctionDeclSyntax+Extensions.swift │ ├── FunctionParameters+Extensions.swift │ └── TypeSyntax+Extensions.swift │ ├── Extractors │ └── Extractor.swift │ ├── Factories │ ├── AssociatedtypeFactory.swift │ ├── CalledFactory.swift │ ├── CallsCountFactory.swift │ ├── ClosureFactory.swift │ ├── FunctionImplementationFactory.swift │ ├── ReceivedArgumentsFactory.swift │ ├── ReceivedInvocationsFactory.swift │ ├── ReturnValueFactory.swift │ ├── SpyFactory.swift │ ├── ThrowableErrorFactory.swift │ ├── VariablePrefixFactory.swift │ └── VariablesImplementationFactory.swift │ ├── Helpers │ └── TypeSanitizer.swift │ ├── Macro │ ├── AccessLevelModifierRewriter.swift │ └── SpyableMacro.swift │ └── Plugin.swift └── Tests └── SpyableMacroTests ├── Assertions └── AssertBuildResult.swift ├── Extensions ├── UT_FunctionDeclSyntax+Extensions.swift ├── UT_FunctionParameterListSyntax+Extensions.swift ├── UT_TypeSyntax+ContainsGenericType.swift └── UT_TypeSyntax+ErasingGenericType.swift ├── Extractors └── UT_Extractor.swift ├── Factories ├── UT_CalledFactory.swift ├── UT_CallsCountFactory.swift ├── UT_ClosureFactory.swift ├── UT_FunctionImplementationFactory.swift ├── UT_ReceivedArgumentsFactory.swift ├── UT_ReceivedInvocationsFactory.swift ├── UT_ReturnValueFactory.swift ├── UT_SpyFactory.swift ├── UT_ThrowableErrorFactory.swift ├── UT_VariablePrefixFactory.swift └── UT_VariablesImplementationFactory.swift ├── Helpers └── UT_TypeSanitizer.swift └── Macro └── UT_SpyableMacro.swift /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.editorconfig -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [matejkob] 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/format.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.github/workflows/format.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.gitignore -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.mailmap -------------------------------------------------------------------------------- /.spi.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/.spi.yml -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /Examples/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Package.swift -------------------------------------------------------------------------------- /Examples/Package@swift-6.0.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Package@swift-6.0.swift -------------------------------------------------------------------------------- /Examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/README.md -------------------------------------------------------------------------------- /Examples/Sources/AccessLevels.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Sources/AccessLevels.swift -------------------------------------------------------------------------------- /Examples/Sources/Polymorphism.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Sources/Polymorphism.swift -------------------------------------------------------------------------------- /Examples/Sources/ViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Sources/ViewModel.swift -------------------------------------------------------------------------------- /Examples/Tests/PolymorphismManualTest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Tests/PolymorphismManualTest.swift -------------------------------------------------------------------------------- /Examples/Tests/PolymorphismTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Tests/PolymorphismTests.swift -------------------------------------------------------------------------------- /Examples/Tests/ViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Examples/Tests/ViewModelTests.swift -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/LICENSE -------------------------------------------------------------------------------- /NAMING_CONVENTION.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/NAMING_CONVENTION.md -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Package.swift -------------------------------------------------------------------------------- /Package@swift-6.0.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Package@swift-6.0.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/README.md -------------------------------------------------------------------------------- /Sources/Spyable/Documentation.docc/Examples.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | -------------------------------------------------------------------------------- /Sources/Spyable/Spyable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/Spyable/Spyable.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Diagnostics/SpyableDiagnostic.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Diagnostics/SpyableDiagnostic.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Diagnostics/SpyableNoteMessage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Diagnostics/SpyableNoteMessage.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Extensions/FunctionDeclSyntax+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Extensions/FunctionDeclSyntax+Extensions.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Extensions/FunctionParameters+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Extensions/FunctionParameters+Extensions.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Extractors/Extractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Extractors/Extractor.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/AssociatedtypeFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/AssociatedtypeFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/CalledFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/CalledFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/CallsCountFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/CallsCountFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/ClosureFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/ClosureFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/FunctionImplementationFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/FunctionImplementationFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/ReceivedArgumentsFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/ReceivedArgumentsFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/ReceivedInvocationsFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/ReceivedInvocationsFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/ReturnValueFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/ReturnValueFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/SpyFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/SpyFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/ThrowableErrorFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/ThrowableErrorFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/VariablePrefixFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/VariablePrefixFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Helpers/TypeSanitizer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Helpers/TypeSanitizer.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Macro/AccessLevelModifierRewriter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Macro/AccessLevelModifierRewriter.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Macro/SpyableMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Macro/SpyableMacro.swift -------------------------------------------------------------------------------- /Sources/SpyableMacro/Plugin.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Sources/SpyableMacro/Plugin.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Assertions/AssertBuildResult.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Assertions/AssertBuildResult.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Extensions/UT_FunctionDeclSyntax+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Extensions/UT_FunctionDeclSyntax+Extensions.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Extensions/UT_FunctionParameterListSyntax+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Extensions/UT_FunctionParameterListSyntax+Extensions.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Extensions/UT_TypeSyntax+ContainsGenericType.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Extensions/UT_TypeSyntax+ContainsGenericType.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Extensions/UT_TypeSyntax+ErasingGenericType.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Extensions/UT_TypeSyntax+ErasingGenericType.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Extractors/UT_Extractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Extractors/UT_Extractor.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_CalledFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_CalledFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_CallsCountFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_CallsCountFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_ClosureFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_ClosureFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_FunctionImplementationFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_FunctionImplementationFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_ReceivedArgumentsFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_ReceivedArgumentsFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_ReceivedInvocationsFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_ReceivedInvocationsFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_ReturnValueFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_ReturnValueFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_SpyFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_SpyFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_ThrowableErrorFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_ThrowableErrorFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_VariablePrefixFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_VariablePrefixFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Factories/UT_VariablesImplementationFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Factories/UT_VariablesImplementationFactory.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Helpers/UT_TypeSanitizer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Helpers/UT_TypeSanitizer.swift -------------------------------------------------------------------------------- /Tests/SpyableMacroTests/Macro/UT_SpyableMacro.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Matejkob/swift-spyable/HEAD/Tests/SpyableMacroTests/Macro/UT_SpyableMacro.swift --------------------------------------------------------------------------------