Spoon v8.1.0 Release Notes

Release Date: 2020-03-23 // 2 months ago

Previous changes from v8.0.0

  • 🚀 this PR will trigger the official release of Spoon 8.0.0

    🆕 New features

    • ➕ Add new variable refactoring class. (PR: #3162)
    • ➕ Add role EMODIFIER for extended modifier. (PR: #3098)
    • CtImportVisitor#visitUnresolvedImport. (PR: #3086)
    • DecompiledResource: Add a SpoonResource that can be used in any launcher. (PR: #3124)
    • SpoonifierVisitor: A visitor that generates the spoon code to recreate a spoon model. (PR: #3105)
    • 👍 decompiler: Add support for procyon. (PR: #3123)
    • visualisation
      • Panel added to show Spoon objects' properties. (PR: #3107)
      • Spoon visualiser improvement for accessing JavaDoc. (PR: #3101)
    • spoon-visualisation: Spoon AST visualisation tool. (PR: #3072)

    🐛 Bug Fixes

    • CreateVariableAssignment now creates a CtVariableWrite. (PR: #3157)
    • 🛠 Fixes the toString() call on an array. (PR: #3134)
    • ♻️ CtCompilationUnitImpl: Fix regression after auto-import refactoring. (PR: #3131)
    • 🛠 Fix regression when rewriting static field access. (PR: #3115)
    • The type of string concatenation is not null. (PR: #3075)
    • (ParentExiter.java): set position for implicit loop body block. (PR: #3084)
    • 🛠 Fix regression in field accesses of static fields. (PR: #3139)
    • 👌 Improve backward compatibility of toString and add toDebugString. (PR: #3099)
    • Don't check modifiers in CtVariable#getDeclaringType. (PR: #3066)
    • 🛠 Fix regression in pretty printer (default DJPP is fully qualified). (PR: #3132)
    • 🛠 Fix incorrect model for empty for loop. (PR: #3108)
    • 🛠 Fix more regressions after auto-import refactoring. (PR: #3127)
    • ToStringWithImports works even with no position. (PR: #3110)
    • 🛠 Fix regression in auto-import. (PR: #3125)
    • Indeed call the preprocessors in toString/autoimports. (PR: #3103)
    • 🖨 CtElementImpl#toString: Fix toString for SniperPrinter. (PR: #3147)
    • 0️⃣ DefaultJavaPrettyPrinter: Support for inline else if. (PR: #3088)
    • ImportCleaner: Import must be kept when they are used in Javadoc. (PR: #3160)
    • Iterators: Next() first checks hasNext and throws the correct error. (PR: #3164)
    • PositionBuilder: Fix lambda parameters position. (PR: #3137)
    • SourceFragmentContext: Visit field reference in import as well. (PR: #3161)
    • SourceOptions: Close the output stream in SourceOptions. (PR: #3089)
    • TypeNameScope: Order of processing LexicalScope elements of Type. (PR: #3085)
    • 📜 core: Parsing a one-line class produces correct line numbers. (PR: #3069)
    • ♻️ import: Fix regression after import refactoring. (PR: #3149)
    • ⚡️ pom: Update/add license header in poms. (PR: #3143)

    📚 Documentation

    • ➕ Add API documentation to public methods. (PR: #3152)
    • ➕ Add archunit to related work in architecture enforcement. (PR: #3146)
    • 👌 Improve documentation while preparing the MadridJUG meetup. (PR: #3141)
    • 👌 Improve landing page. (PR: #3128)
    • Minor improvement to example page. (PR: #3100)
    • ➕ Add example for snippet filtering. (PR: #3062)
    • ROADMAP.md: Roadmap 100% points to issues. (PR: #3119)
    • launcher.md: Improve decompilation doc. (PR: #3130)
    • visualisation: Mention the visualisation tool on the website. (PR: #3102)

    ♻️ Refactoring

    • 👉 Use .equals() when comparing Strings and Boxed types. (PR: #3165)
    • 📇 Rename internal method with particularly confusing name. (PR: #3109)
    • 🖨 Handling of imports in pretty printer. (PR: #2683)
    • ⚡️ Decompiler: Update interface (in preparation for DecompiledResource). (PR: #3122)
    • NoSourcePosition: Applies the null design pattern to compilation units. (PR: #3151)

    Authors

    Name Nb Commit
    Martin Monperrus 30
    Nicolas Harrand 14
    arno 5
    Haris Adzemovic 3
    Pavel Vojtechovsky 3
    Egor Bredikhin 2
    Rhys Compton 1
    Muhammet Ali AKBAY 1
    Simon Urli 1
    Thomas Durieux 1
    HectorSM 1
    Lionel Seinturier 1