Insanity v0.11.0 Release Notes
-
๐ New Features
- ๐ Supports adding new templates files while in watcher mode
- ๐ Supports adding new source files while in watcher mode
- โ Added support for subscripts
- โ Added
isGeneric
property forMethod
- You can now pass additional arguments one by one, i.e.
--args arg1=value1 --args arg2 --args arg3=value3
- ๐ Improved support for generic types. Now you can access basic generic type information with
TypeName.generic
property - โ added
@objcMembers
attribute - ๐ Moved EJS and Swift templates to separate framework targets
- ๐ EJS templates now can be used when building Sourcery with SPM
- โ Added Closures to AutoMockable
- You can now link generated files to projects using config file
- You can now use AutoMockable with annotations
- โก๏ธ Updated to latest version of Stencil (commit 9184720)
- โ Added support for annotation namespaces
- โ Added
--exclude-sources
and--exclude-templates
CLI options
** ๐ฅ Breaking **
- @objc attribute now has a
name
argument that contains Objective-C name of attributed declaration - Type collections
types.based
,types.implementing
andtypes.inheriting
now return non-optional array. If no types found, empty array will be returned. This is a breaking change for template code like this:
<% for type in (types.implementing["SomeProtocol"] ?? []) { %>
The new correct syntax would be:
<% for type in types.implementing["SomeProtocol"] { %>
Internal changes
- Migrate to Swift 4, SwiftPM 4 and Xcode 9.2
selectorName
for methods without parameters now will not contain()
returnTypeName
for initializers will be the type name of defining type, with?
for failable initializers- ๐ Improved compile time of AutoHashable template
- โก๏ธ Updated StencilSwiftKit and Stencil to 0.10.1
๐ Bug fixes
- ๐ Fixes FSEvents errors reported in #465 that happen on Sierra
- JS exceptions no more override syntax errors in JS templates
- ๐ Accessing unknown property on
types
now results in a better error thanundefined is not an object
in JS templates - ๐ Fixed issue in AutoMockable, where generated non-optional variables wouldn't meet protocol's requirements. For this purpose, underlying variable was introduced
- ๐ Fixed
inline:auto
not inserting code if Sourcery is run with cache enabled #467 - ๐ Fixed parsing @objc attributes on types
- ๐ Fixed parsing void return type in methods without spaces between method name and body open curly brace and in protocols
- ๐ Fixed AutoMockable template generating throwing method with void return type
- ๐ Fixed parsing throwing initializers
- ๐ Fixed trying to process files which do not exist
- ๐คก Automockable will not generate mocks for methods defined in protocol extensions
- ๐ Fixed parsing typealiases of generic types
- AutoLenses template will create lenses only for stored properties
- ๐ Fixed resolving actual type name for generics with inner types
- ๐ Fixed parsing nested types from extensions
- ๐ Fixed removing back ticks in types names
- ๐ Fixed creating output folder if it does not exist
- ๐ Fixed inferring variable types with closures and improved inferring types of enum default values
- ๐ Fixed enum cases with empty parenthesis not having () associated value