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 for Method
    • 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 and types.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 than undefined 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