All Versions
13
Latest Version
Avg Release Cycle
86 days
Latest Release
70 days ago

Changelog History
Page 1

  • v8.1.0

    March 23, 2020

    πŸ”„ Changelog: #3310

  • v8.0.0

    November 06, 2019

    πŸš€ 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
  • v7.5.0

    July 28, 2019

    πŸ”„ Changelog at #3057

  • v7.4.0

    May 13, 2019

    πŸ†• New features

    • βž• Add CtType#toStringWithImports. (PR: #2945)
    • Check if a CtType is an array type. (PR: #2882)
    • CtBFSIterator: Add an iterator that explores a CtElement's children in breadth first order. (PR: #2904)
    • CtElement: Add a method to get all direct children of an element. (PR: #2906)
    • CtCommentImpl: Add _setRawContent to be able to bypass cleanComment. (PR: #2889)

    πŸ› Bug Fixes

    • πŸ– Handle special cases in CtAnnotationType. (PR: #2947)
    • βœ… Test and fix untested method createNewClass(). (PR: #2943)
    • Give appropriate permissions of files in doc folder. (PR: #2949)
    • πŸ‘Œ Improve getCorrespondingRuntimeObject/convertElementToRuntimeObject to handle shadow fields. (PR: #2899)
    • JarLauncher: Fix #2951, Really delete temporary decompiled source directory. (PR: #2952)
    • 🌲 ContextBuilder: Catch PositionBuilder exception and log it instead of crashing. (PR: #2907)
    • CtCompilationUnitImpl: ToString() no longer throws a NPE. (PR: #2918)
    • position: Type of CtNewClass is implicit without position. (PR: #2834)
    • πŸ—„ TypeFactory: Raise an exception for deprecated createTypeParameterReference wildcard. (PR: #2890)

    πŸ“š Documentation

    • βž• Add example for CtAssert#setExpressiont #2917. (PR: #2917)
    • πŸ›  Fix links in doc page "Examples of Spoon Usages". (PR: #2932)
    • CONTRIBUTING.md mentions our architectural rules. (PR: #2929)
    • βž• Add & update links in the example page. (PR: #2925)
    • πŸ›  Fix jenkins badge. (PR: #2924)
    • πŸ›  Fix typos in slides. (PR: #2948)
    • βž• Add example for CtAssert#setExpression. (PR: #2917)
    • πŸ›  Fix broken documentation. (PR: #2968)
    • πŸ›  Fix remaining Javadoc issues. (PR: #2910)
    • πŸ›  Fix doc in JavadocDescription.java. (PR: #2909)
    • πŸ‘Œ Improve documentation on AST traversal. (PR: #2905)
    • βž• Add slide decks. (PR: #2937)
    • πŸ“š Release.md: Improve documentation about releasing after release of 7.3.0. (PR: #2881)
    • spoon-control-flow: Fix javadoc errors. (PR: #2916)
    • 🚚 command_line.md: Remove link to decommissioned Gforge. (PR: #2900)

    ♻️ Refactoring

    • JDTCommentBuilder: Improve error message with position of offending comment. (PR: #2908)

    βœ… Tests

    • βœ… SourcePositionTest: Don't save temporary files in ./src. (PR: #2969)
    • βœ… Rename ArchitectureTest into DecompilerArchitectureTest in spoon-decompiler to avoid confusion. (PR: #2930)
    • βœ… CtTypeReference: Add test for methods CtTypeReference#unbox() and box(), fix #1842. (PR: #2919)
    • βœ… FieldAccessTest: Nested field access, and example for #2884.

    Other

    • Exclude GUI from coverage. (PR: #2940)
    • Switch to junit5. (PR: #2939)
    • βž• Add Sonar Quality Gate badge. (PR: #2935)
    • πŸ›  Fix javadoc and reporting config and check it in CI. (PR: #2911)
    • Clean parent pom.xml. (PR: #2883)
    • ⬆️ Bump to 7.4.0-snapshot. (PR: #2874)

    Unknown

    • Adopt dual licensing MIT-CECILL-C (#2950). (PR: #2950)
    • Up. (PR: #2941)
    • ⚑️ Update the list of contributors. (PR: #2912)
    • Eclipse` in README. (PR: #2903)

    Authors

    Name Nb Commit
    Martin Monperrus 28
    Nicolas Harrand 9
    Alexander Shopov 2
    Charm 1
    Pavel Vojtechovsky 1
    GluckZhang 1
    Fabien DUMINY 1
    Simon Urli 1
    Mickael Istria 1
  • v7.3.0

    February 10, 2019

    πŸ†• New features

    • Introduce the concept of lexical scope (interface LexicalScope). (PR: #2813)
    • πŸ‘ Allow spoon to support duplicate definitions. (PR: #2772)
    • βž• Add module for control-flow analysis. (PR: #2827)

    πŸ› Bug Fixes

    • πŸ›  Fix NPE for multicatch qualified exceptions. (PR: #2862)
    • Reference of CtImport is fully qualified and has no generics. (PR: #2819)
    • IndexOutOfBoundsException in JDTCommentBuilder. (PR: #2840)
    • πŸ›  Fix static type wildcard imports. (PR: #2865)
    • ♻️ Refactor code->runtime methods so that CtAnnotation#getValueOfObject does not overflow. (PR: #2866)
    • πŸ›  Fix classpath error with surefire. (PR: #2867)
    • πŸ”’ Security issue with jackson-databind. (PR: #2856)
    • CompilationUnit has lineSeparatorPositions even for empty class. (PR: #2824)
    • πŸ›  Fix position of type modifier after comment. (PR: #2825)
    • NPE in JDTCommentBuilder. (PR: #2822)
    • πŸ‘» PositionBuilder: Prevents exception for incomplete modifiers' position information. (PR: #2848)
    • position
      • Source position of CtFieldReference. (PR: #2830)
      • Position of reference of import and package declaration. (PR: #2832)
      • Fix source position of new ArrayList<>(). (PR: #2833)
    • πŸš€ doc: Fixes#2790 javadoc site deployment, adapting to new modules organization. (PR: #2826)

    πŸ“š Documentation

    • πŸ›  Fix broken link. (PR: #2871)
    • πŸ›  Fix unrendered link in doc. (PR: #2851)
    • πŸ›  Fix broken snippet. (PR: #2841)

    ♻️ Refactoring

    • πŸ“‡ Rename getCurrentNameScope to getCurrentLexicalScope. (PR: #2857)
    • Access to JDK CompilationUnit contents and lineSeparatorPositions. (PR: #2831)
    • ♻️ Refactor refactoring code :-) in Refactoring#copyType(). (PR: #2820)
    • 🐎 performance: Optimize incremental launcher. (PR: #2821)

    βœ… Tests

    • βœ… MavenLauncher: Test that system dependencies are resolved in classpath fix #1682. (PR: #2836)

    Other

    • ⚑️ pom.xml: Updating commons-io and commons-lang3. (PR: #2853)
    • 🚚 Moves JUnit dependency to parent pom. (PR: #2828)
    • Clean old Travis scripts. (PR: #2829)

    Community

    • Nicolas Harrand becomes integrator. (PR: #2818)

    Authors

    Name Nb Commit
    Pavel Vojtechovsky 10
    Martin Monperrus 9
    Egor Bredikhin 3
    Nicolas Harrand 3
    Thomas Durieux 1
    Kai Luo 1
    Benjamin DANGLOT 1
    Lionel Seinturier 1
    Simon Urli 1
    ClΓ©ment Fournier 1
  • v7.2.0

    December 04, 2018

    πŸ†• New features

    • βž• Add CtImportVisitor. (PR: #2730)
    • βž• Add CtTypeReference#canAccess(CtTypeMember). (PR: #2815)
    • AllTypeMembersFunction has new mode SKIP_PRIVATE. (PR: #2803)
    • βž• Add support for javadoc inline tags. (PR: #2802)
    • βž• Add encoding detection callback. (PR: #2788)
    • EarlyTerminatingScanner can scan content of compilation units. (PR: #2793)
    • βž• Add assertCtElementEquals. (PR: #2767)
    • βž• Add CtAbstractImportVisitor. (PR: #2764)
    • βž• Add CtTypeReference#implicitParent. (PR: #2805)
    • βž• Add CtComment#getRawContent(). (PR: #2746)
    • πŸ†• New CtTypeMemberWildcardImportReference for import package.Type.*. (PR: #2731)
    • CtScannerListener knows role of scanned element. (PR: #2739)
    • βž• Add CtCompilationUnit for future import and sniper improvements. (PR: #2702)
    • πŸ‘‰ Use Apache Common Compressor API to [de]compress serialized models. (PR: #2165)
    • βž• Add metamodel concept CtPackageDeclaration. (PR: #2707)
    • βž• Add support for Fernflower for decompilation. (PR: #2668)
    • βž• Add support for transformation at load-time in the JVM. (PR: #2645)

    πŸ› Bug Fixes

    • βœ… CtQueryImpl#detectTargetClassFromCCE, FilterTest#testInvalidQueryStep: Adapt parsing of ClassCastException message which has changed in oracle jdk 11. (PR: #2787)
    • βœ… FieldAccessTest: Adapt FieldAccessTest to oracle jdk 11/jdt changes. (PR: #2789)
    • βœ… MainTest: Quickfix for Travis 10min timeout. (PR: #2667)
    • doc: Explain the different kinds of pull-requests. (PR: #2647)
    • πŸ“š documentation: Pattern.md. (PR: #2735)
    • πŸ—„ javadoc: Replace deprecated by better javadoc. (PR: #2663)
    • πŸ–¨ printer: Add space before else of if statement. (PR: #2679)
    • βœ… test
      • MainTest#testGenericContract on MS Windows. (PR: #2814)
      • ImportTest. (PR: #2816)
    • Modifiers of enum members. (PR: #2630)
    • One can call getModifiers on ".class" of "Aclass.class". (PR: #2776)
    • πŸ›  Fix incomplete behavior: Javadoc#setContent should parse tags. (PR: #2765)
    • πŸ“œ Parsing of java version not starting with "1." in pom.xml. (PR: #2729)
    • πŸ“¦ CtPackageDeclaration has a valid source position. (PR: #2760)
    • πŸ— JDT spoon compiler builds imports and then comments. (PR: #2807)
    • Broken link in papers.md. (PR: #2749)
    • CtImport position includes its comment. (PR: #2810)
    • PatternMatcher ignores isImplicit. (PR: #2726)
    • CtExecutableReference cannot use CtTypeParameterReference. (PR: #2725)
    • ⬆️ Upgrade insecure commons-compress to latest version. (PR: #2717)
    • πŸ›  Fix comment of CtAnnotation value. (PR: #2587)
    • MetamodelProperty#containerKindOf knows Collection. (PR: #2705)
    • 🌲 Invalid error log message in ContextBuilder#getVariableDeclaration. (PR: #2677)
    • πŸ“¦ CtPackageDeclaration position doesn't include top file comment. (PR: #2811)
    • πŸ–¨ Sniper printer leaves when no more child tokens. (PR: #2808)
    • πŸ”„ ChangeCollector detects changes in CtCompilationUnit too. (PR: #2794)
    • πŸ‘‰ Use Environment encoding when writing files on disk. (PR: #2796)
    • πŸ›  Fix invalid if model with empty statements in then/else branch. (PR: #2733)

    πŸ“š Documentation

    • πŸ‘Œ Improve documentation about release process. (PR: #2650)
    • βœ‚ Remove all hard coded version numbers to simplify release. (PR: #2786)
    • Spoon-decompiler is not spoon-bytecode. (PR: #2784)
    • Getting started for external dependency. (PR: #2752)
    • πŸ›  Fix broken link in doc. (PR: #2743)
    • πŸ›  Fix javadoc in TypeFactory.java. (PR: #2688)
    • βœ‚ Remove link to decommissioned Gforge. (PR: #2792)
    • ⚑️ Updated spelling and formatting of path.md page. (PR: #2696)
    • βž• Add missing javadoc for PatternPrinter. (PR: #2689)
    • πŸ›  Fix @link in javadoc. (PR: #2685)
    • πŸ›  Fix contract sentence. (PR: #2691)
    • βž• Add example in path.md. (PR: #2661)
    • website: Document IncrementalLauncher. (PR: #2651)

    ♻️ Refactoring

    • πŸ›  Fix sonarqube - use Java array syntax (not C-like). (PR: #2686)
    • πŸ‘ Better handling of SourceFragment in CompilationUnit. (PR: #2806)
    • βœ… Sort modifiers in ModelStreamerTest.java. (PR: #2755)
    • Excluding decompiler related features from spoon-core. (PR: #2766)
    • πŸ–¨ GetDocComment uses the same implementation as pretty-printer. (PR: #2775)
    • πŸ‘Œ Improve error message with Spoon testing fluent API. (PR: #2769)
    • πŸ— In clone code, builder.copy is called first. (PR: #2768)
    • πŸ–¨ JavaOutputProcessor uses Environment#createPrinter(). (PR: #2759)
    • πŸ‘ Better error handling in CtFieldReference#getActualField. (PR: #2754)
    • βœ… Replace List<? extends Object> by List<?> in PatternTest. (PR: #2753)
    • βœ‚ Remove redundant cast. (PR: #2700)
    • βœ‚ Remove useless assignment in JDTTreeBuilderHelper.java. (PR: #2690)
    • Simplify negation (fix SonarQube). (PR: #2695)
    • CtTypeAccess#implicit is derived now. (PR: #2804)
    • πŸ”„ Change assertion from assertSame to assertEquals. (PR: #2687)
    • βœ‚ Remove redundant parentheses in PatternBuilder. (PR: #2653)
    • βœ… Use static import for asserts in tests. (PR: #2655)
    • βœ‚ Remove redundant 'super' call from SpoonClassFileTransformerTest.java. (PR: #2678)
    • SourcePosition#equals should take into account all information. (PR: #2660)
    • Replace by . (PR: #2675)
    • Flip order of comparison - put literal first to lower risk of NPE. (PR: #2674)
    • βž• Add missing braces to tests. (PR: #2673)
    • βœ‚ Remove deprecated annotation (for sonarqube). (PR: #2665)
    • βž• Add final modifier. (PR: #2664)
    • Stream handling in SerializationModelStreamer#load(InputStream). (PR: #2635)
    • Replace length()==0 by isEmpty(). (PR: #2658)

    🐎 Performance

    • πŸ— .travis.yml: Merge travis builds to fall under 5 builds. (PR: #2782)
    • βœ… MainTest: Parallelize execution of testElementToPathToElementEquivalency. (PR: #2694)
    • Cache result of CtTypeReference#findClass(). (PR: #2591)

    βœ… Tests

    • βœ‚ Remove long logs fof CtGenerationTest which makes CI log unreadable. (PR: #2750)
    • βœ… Minimize logs in FilterTest. (PR: #2756)
    • βœ… Generic contracts are run only on .testclasses.. (PR: #2716)
    • πŸ‘‰ Use contains instead of indexOf. (PR: #2715)
    • βœ… Relax intercession test to prepare #2615. (PR: #2706)
    • βœ‚ Remove redundant cast. (PR: #2704)
    • βœ… Relax intercession test to prepare #2615.
    • Constructor with this(xxx) replaced by super(xxx)?. (PR: #2680)
    • 🏁 In tests also, windows's classpath elements are separated by semi column. (PR: #2692)
    • 🏁 IncrementalLauncherTest: Attempt to remove flackiness on windows CI. (PR: #2745)

    Other

    • πŸ’… Do not execute checkstyle for all jobs. (PR: #2799)
    • πŸ‘• Maven-javadoc-plugin now supports the doclint parameter. (PR: #2800)
    • πŸ’… Check style doesn't check left curly on lambda. (PR: #2795)
    • ⚑️ Update build.sh to use the correct snapshot repo in Jenkins. (PR: #2777)
    • πŸ”„ Change jenkins/build.sh to allow passing maven parameters. (PR: #2723)
    • πŸ›  Fix security issue in dependency. (PR: #2697)
    • πŸ’… Prepares checkstyle checking for src/test/java. (PR: #2611)
    • βœ‚ Remove deprecated methods after release. (PR: #2649)
    • πŸš€ Bump info after release of 7.1.0. (PR: #2648)

    Unknown

    • πŸš€ 7.2.0 released on Central.
    • Explicit rule on how integrators are chosen. (PR: #2791)
    • βœ… AccessFullyQualifiedFieldTest.java. (PR: #2656)

    Authors

    Name Nb Commit
    Pavel Vojtechovsky 38
    Martin Monperrus 27
    Tomasz ZieliΕ„ski 23
    Nicolas Harrand 12
    Egor Bredikhin 3
    Simon Urli 3
    Mehdi Kaytoue 1
    lodart 1
    raymogg 1
  • v7.1.0

    October 10, 2018

    πŸ”„ Changelog at #2489

  • v7.0.0

    July 04, 2018

    πŸ”„ Changelog

    🍱 All potentially breaking changes are marked with a "⚠️"

    Major new features

    πŸ†• New features

    • 🍱 ⚠️ Explicitly fail when an element is added twice to two different parents. (PR: #2009)
    • 🍱 ⚠️ Enable comments by default. (PR: #2065)
    • One can get annotation values directly. (PR: #2036)
    • βž• Add the ability to follow the progress of the creation of the Spoon model. (PR: #2043)
    • βž• Add support for incremental build. (PR: #1905)
    • πŸ– Handles range version in MavenLauncher. (PR: #2057)
    • Introduce the concept of "Pattern". (PR: #1686)
    • βž• Add CtAnnotation#getAllValues to reason about all annotation values. (PR: #2042)
    • Gzip model serialization. (PR: #2103)
    • EqualsVisitor can report which attribute is not equal. (PR: #1998)
    • βž• Add CtElement#descendantIterator and CtElement#asIterable. (PR: #1986)
    • βž• Add CtIterator for dfs-based iteration of CtElement's descendants. (PR: #1980)
    • βž• Add SourcePosition#isValidPosition(), to detect invalid position without null or -1 checks. (PR: #1964)
    • βž• Add #getSourceDetails to debug source code positions. (PR: #1950)
    • API methods to know when the initial model is built. (PR: #2138)
    • βž• Add support to Java 10. (PR: #2054)
    • βž• Add CtAnnotation#getWrappedValue to provide a regular interface for annotation values. (PR: #1935)
    • experimental: Add ChangeCollector to listen on changes and remembers them. (PR: #1941)
    • position: Add the position of the modifier in the ast. (PR: #1959)

    πŸ› Bug Fixes

    • executable: Fix npe in getExecutableDeclaration when declaring type is null. (PR: #2021)
    • πŸ‘ mavenlauncher: Add support for Maven dependency management. (PR: #2024)
    • metamodel: Mark unsettable setters of name, modifier and label. (PR: #2048)
    • πŸ— module: Spoon is able to build Java 9 code with modules in full classpath. (PR: #2070)
    • pattern: Improve handling of CtTypeReference Pattern parameters. (PR: #2078)
    • position
      • Fix enum constructor call. (PR: #2146)
      • Fix position of nested type arguments like List<List<?>>. (PR: #2142)
      • Fix position of CtForEach. (PR: #2152)
      • Invalid end column. (PR: #2159)
      • Position of expressions ending with wildcard. (PR: #2151)
      • Position of CtCase includes it's statements. (PR: #2150)
      • Fix position of String arg[] and lambda parameter. (PR: #2149)
      • CtCatch has no modifiers, they are in CatchVariable. (PR: #2156)
      • Fix source position of empty method body. (PR: #2145)
    • reference: Fix npe in getTypeReference when the reference is null. (PR: #2020)
    • πŸ› Bug in AccessibleVariablesFinder when executed after PartialEvaluation. (PR: #2123)
    • πŸ›  Fix line separators in test. (PR: #2111)
    • The imports are properly computed after processing. (PR: #2083)
    • 0️⃣ Finish the change about the default classpath mode. (PR: #2074)
    • Enum#valueOf is now well shadowed. (PR: #2096)
    • πŸ› Bug when getting CU from a parsed snippet. (PR: #2086)
    • πŸ›  Fix source position of CtCatch and CtCatchVariable. (PR: #2128)
    • DJPP is more tolerant to inconsistent model. (PR: #1903)
    • Init RoleHandler lazily to pass when RoleHandler is generated. (PR: #2068)
    • πŸ›  Fix missing license header. (PR: #2075)
    • πŸ›  Fix regression in Template. (PR: #2069)
    • πŸ‘ Proper support for "Object[]::new" constructs. (PR: #1945)
    • NPE when calling getQualifiedName on some CtFieldReference. (PR: #2135)
    • πŸ›  Fix position of (String arg[]). (PR: #2015)
    • πŸ‘Œ Support creation of partial shadow classes. (PR: #2040)
    • VarArgs parameters always have a CtArrayTypeReference type. (PR: #2131)
    • Prevent NPE due to getDeclaringType. (PR: #2039)
    • πŸ›  Fix regression due to #2009. (PR: #2035)
    • 0️⃣ CtAnnotation#getValue returns the default value if one exists. (PR: #2034)
    • Detection of lambda expression method. (PR: #2023)
    • Expression type cast source positions. (PR: #2113)
    • πŸ›  Fix low-level JDT error due to some annotations (in particular @nullable). (PR: #1975)
    • Npe in getEnclosingType when getTypeDeclaration is null. (PR: #2033)
    • πŸ›  Fix when interface method overrides object method. (PR: #2025)
    • πŸ›  Fix CtTypeParameter creation in shadow mode. (PR: #2031)
    • Consistent contract for getActualClass: never returns null. (PR: #2027)
    • πŸ›  Fix SonarQube warning by addiing transient modifiers in SpoonObjectFieldsTable. (PR: #2121)
    • EOL were not fully taken into account in Spoon. (PR: #2122)
    • Clarify Environment#checksAreSkipped and associated setters. (PR: #2011)
    • Set parent of auto-created CtExecutableReference. (PR: #2007)
    • Manage generics from interfaces in shadow mode. (PR: #1914)
    • πŸ›  Fix visibility of enum values. (PR: #1999)
    • πŸ›  Fix actualTypeArguments of array type reference. (PR: #1997)
    • SetModifiers(Collections.emptySet()) resets modifiers now. (PR: #1992)
    • Don't fail on ClassNotFoundException in CtQueryImpl. (PR: #1996)
    • NPE when CtQueryImpl#detectTargetClassFromCCE return null. (PR: #1995)
    • πŸ– Handle comments at the bottom of a file. (PR: #1976)
    • Catch NoClassDefFoundError when we try to import a class absent from the classpath. (PR: #1974)
    • πŸ›  Fix LineFilter for loops with no body. (PR: #1973)
    • πŸ›  Fix the position of catch variables. (PR: #1969)
    • Set the constructor implicitness directly in JDTTreeBuilder. (PR: #1958)
    • πŸ›  Fix the source start and source end of package. (PR: #1957)
    • πŸ›  Fix failing build because of the usage of random in CompilationUnit comparison. (PR: #1954)
    • 0️⃣ Provide default sorting of compilation units. (PR: #1938)
    • βœ‚ Remove useless CtPackageImpl#getPosition. (PR: #1952)
    • πŸ›  Fix position of new new SomeInterface() {...}. (PR: #1949)
    • πŸ›  Fix positions of TypeParameter, annonymous classes, and methods without modifiers. (PR: #1948)
    • βž• Add a log warning in verifySourceClasspath. (PR: #1937)
    • πŸ›  Fix class class-level comments' position. (PR: #1931)
    • Always create new type reference for primitive type. (PR: #1940)
    • Comments after class name and before type members are associated to correct node. (PR: #1939)
    • Typo in javadoc of CtModel. (PR: #1942)
    • CtCatchVariable#getType() in noclasspath mode may return null. (PR: #1932)
    • πŸ›  Fix bugs and resource leaks found with error-prone. (PR: #1924)
    • Derived properties return unmodifiable collections. (PR: #1923)
    • 🏁 CompilationTest#testFilterResourcesDir file separators on Windows. (PR: #1925)
    • All unsettable properties in the metamodel are derived too. (PR: #1904)
    • πŸ“œ Comment /*/ parsing in JDTCommentBuilder. (PR: #2032)

    ♻️ Refactoring

    • 🍱 ⚠️ comment: Creating an inline comment with newline separators throws an exception. (PR: #2080)
    • 🍱 ⚠️ Move experimental.modelobs to support.modelobs. (PR: #2140)
    • πŸš€ ⚠️ Remove deprecated elements from last release of Spoon. (PR: #2098)
    • 🍱 ⚠️ Remove usage of getActualClass() from CtTypeReferenceImpl. (PR: #2037)
    • 🍱 ⚠️ Set noclasspath to true as default. (PR: #1936)
    • 🍱 ⚠️ Launcher#setArgs cannot be called twice. (PR: #2141)
    • position: CompoundSourcePosition extends SourcePosition. (PR: #2115)
    • Avoid duplicated calls in ImportScannerImpl. (PR: #2134)
    • ♻️ Refactor imports of CtRole. (PR: #2132)
    • πŸ—„ Deprecate methods computeImports in DJPP. (PR: #2124)
    • πŸ›  Fix checkstyle in tests. (PR: #2127)
    • βž• Add transient modifiers in StandardEnvironment.java. (PR: #2059)
    • βœ‚ Remove old broken untested mechanism "buildOnlyOutdatedFiles". (PR: #1913)
    • Slightly change the import API. (PR: #2110)
    • πŸ‘» Report missing parameter value in exception. (PR: #2079)
    • πŸ›  Fix bad resource usage with try-with-resources. (PR: #2045)
    • 🚚 Move metamodel from src/test to src/main. (PR: #2016)
    • GetTypeDeclaration cannot crash in noclasspath mode. (PR: #2028)
    • Introduce ModelList and ModelSet, collections specific to Spoon that handle parents and change events. (PR: #1917)
    • Get*Field now use shadow types. (PR: #2008)
    • EqualsChecker#setNotEqual can be used to debug non-equality. (PR: #1993)
    • πŸ‘ PartialSourcePosition only supports getCompilationUnit for fail-fast behavior. (PR: #1963)
    • 0️⃣ Encapsulate try-with-resources for printing lists in DefaultJavaPrettyPrinter. (PR: #1956)
    • Never return null from CtElement#getPosition() but NoSourcePosition. (PR: #1951)
    • EnumValues constructor call should be marked as implicit. (PR: #2090)
    • βœ‚ Remove old, unused, untested class Timer. (PR: #2017)
    • πŸ‘ Allow to use @experimental on a single method. (PR: #2099)

    βœ… Tests

    • βœ… Unify MetamodelTest and MetaModelTest. (PR: #2012)
    • πŸ‘Œ Improve MainTest. (PR: #2144)
    • πŸ›  Fix CtGenerationTest#testGenerateRoleHandler egg/chicken problem. (PR: #2087)
    • πŸ‘ Better tests for derived and unsettable properties. (PR: #2050)
    • πŸ›  Fix MavenLauncherTest. (PR: #2049)
    • Compare the computed imports against human imports. (PR: #1365)
    • βž• Add test to check that all setters trigger a change event. (PR: #2010)
    • πŸ›  Fix MavenLauncherTest to find paths using File separator. (PR: #2129)
    • Ignore OS specific EOL. (PR: #2006)
    • SpoonMetaModel can be built without spoon sources, only using shadow classes. (PR: #1907)
    • βœ‚ Remove testIncrementalModel. (PR: #2004)
    • βž• Add test for ExpressionTemplate. (PR: #2002)
    • βž• Add new test for shadow enums. (PR: #1926)
    • βž• Add a test to check that in NO_OUTPUT mode, nothing is created. (PR: #1915)
    • βœ‚ Remove unused imports from tests. (PR: #2104)
    • πŸ’… Make checkstyle happy. (PR: #2116)
    • ♻️ refactor
      • Move ClassWithSwitchExample.java to testclasses. (PR: #2158)
      • Move Castings.java to testclasses. (PR: #2155)
      • Move ArrayClass.java to testclasses. (PR: #2154)
      • Move ExtendedStringLiteralTestClass to testclasses. (PR: #2153)
      • Move Ifoo.java to testclasses. (PR: #2157)
    • Typo: invokation -> invocation. (PR: #2114)

    πŸ“š Documentation

    • Give our definition of public API. (PR: #2092)
    • βž• Add Youtube Links of Spoon presentations on Readme. (PR: #2082)
    • πŸ“¦ Move package.html to package-info.java. (PR: #2005)
    • βž• Add link to Google Scholar. (PR: #1987)
    • πŸ“š Update documentation after release 6.2. (PR: #1899)
    • ⚑️ Update README.md to state Java 10 support. (PR: #2091)

    Other

    • βœ‚ Remove bold emphasis of component in changelog. (PR: #2046)
    • βœ… Run Spoon tests also on JDK10. (PR: #2053)
    • Coverage computation now uses JDK9. (PR: #2071)
    • ⬆️ Upgrade JDT version to 3.13.102. (PR: #2052)
    • ⬆️ Upgrade copyright to 2018. (PR: #2058)
    • Check license header presence in CI. (PR: #2066)
    • βž• Add SonarQube dashboard link. (PR: #2044)
    • πŸ”„ Change README to encourage usage/contribution. (PR: #2030)
    • πŸ›  Fix SCM info in pom.xml. (PR: #1966)
    • πŸ›  Fix revapi comparison against Snapshot. (PR: #1920)
    • πŸ›  Fix typo in snapshot repository URL. (PR: #1910)
    • πŸš€ Deploy snapshots on maven.inria.fr instead of gforge.inria.fr for better availability. (PR: #1900)
    • Prepare for next development iteration.

    Authors

    Name Nb Commit
    Simon Urli 48
    Pavel Vojtechovsky 48
    Martin Monperrus 20
    Thomas Durieux 20
    Tomasz Zielinski 9
    Egor18 5
    Miguel Sozinho Ramalho 2
    Ashutosh Kumar Verma 2
    Lionel Seinturier 2
    Filip Krakowski 1
    Mehdi Kaytoue 1
    Roman Leventov 1
    AndrΓ© Cruz 1
  • v6.2.0

    March 08, 2018

    πŸš€ Thanks for the new contributors on this release πŸ‘

    πŸ†• New features

    • βž• Add support to change the destination file on disk for modules, packages and types. (PR: #1610)
    • βž• Add CtScanner#scan(Map) for a better EarlyTerminatingScanner. (PR: #1805)
    • βž• Add support for paths for all elements from model root (CtElement#getPath). (PR: #1874)
    • One could add a type member that already exists (equals but not same) and modify it afterwards. (PR: #1864)
    • βž• Add method CtMethod#getTopDefinitions. (PR: #1844)
    • βž• Add Refactoring#copyType and #copyMethod for advanced cloning. (PR: #1884)
    • 🚚 All RoleHandlers supports set/add/remove. (PR: #1793)
    • βž• Add methods getRoleHandlers(Class), forEachRoleHandler, getRoleHandlerWrtParent in RoleHandlerHelper. (PR: #1794)
    • SpoonModelTree GUI can be created with a custom root element. (PR: #1799)
    • βž• Add support for clone process customization with CloneHelper#addClone. (PR: #1802)
    • Spoon Filter implements java.util.function.Predicate. (PR: #1798)

    πŸ› Bug Fixes

    • GetDocComment returns the complete Javadoc comment, incl. tags. (PR: #1822)
    • βž• Add RoleHandler setter for SUPER_TYPE and INTERFACE. (PR: #1890)
    • CtCatchVariable#multiType role TYPE changed to MULTI_TYPE. (PR: #1877)
    • βœ… Fully comply with the contract of CtScannerTest#testScannerCallsAllProperties. (PR: #1870)
    • πŸ’… Change how DJPP prints "return" so that it's checkstyle-compliant. (PR: #1871)
    • βœ… Unsettable properties are now really unsettable, and there is a test for this. (PR: #1893)
    • πŸ›  Fix equality for assignments. (PR: #1845)
    • GetDocComment() returns asterisk (*) and spaces before comment. (PR: #1841)
    • Small bugs in MethodTypingContext and CtTypeReference. (PR: #1838)
    • ClassTypingContext resolveTypeParameter can gracefully handle outer parameters. (PR: #1837)
    • πŸ›  Fix StringIndexOutOfBoundsException in CtJavadoc#getShortDescription. (PR: #1827)
    • TypeFactory#get(qualifiedName) for class names containing $. (PR: #1891)
    • Stackoverflow on AbstractTypingContext. (PR: #1817)
    • NPE when using MavenLauncher on module containing dependency with variable. (PR: #1810)
    • Undo #1798 for backward compatibility. (PR: #1811)
    • Filter extends Predicate is now working with projects in JDK7. (PR: #1808)
    • Shadow classes should be interpreted according to their kind (enum, interface, etc). (PR: #1806)
    • Easier specification of template parameters (without annotations). (PR: #1801)
    • 0️⃣ DefaultJavaPrettyPrinter prints an ERROR comment instead of raising an exception when a field is missing in the model. (PR: #1797)
    • πŸ›  Various fixes in VisitorPartialEvaluator. (PR: #1800)
    • 0️⃣ DefaultJavaPrettyPrinter exposes the tokenWriter for subclasses. (PR: #1796)
    • ParentFunction doesn't fail on null parent. (PR: #1795)
    • βž• Add generic typing to TypeFactory constants. (PR: #1792)
    • serialization : SourcePosition#getFile() after deserialization. (PR: #1847)
    • πŸ›  Fix order of type members. (PR: #1787)

    πŸ“š Documentation

    • βž• Add missing javadoc. (PR: #1843)
    • βž• Add missing Javadoc in ModelsUtils. (PR: #1860)
    • πŸ“š Missing documentation in public methods used for pretty-printing. (PR: #1854)
    • Another set of Javadoc comments for public methods. (PR: #1856)
    • βž• Add API documentation to interface JavaReflectionVisitor. (PR: #1850)
    • βž• Add doc for public method in RtMethod. (PR: #1858)
    • πŸ›  Fix Javadoc (incorrect starting tag). (PR: #1839)
    • πŸ›  Fix missing javadoc. (PR: #1840)
    • πŸ‘Œ Improve Javadoc of #getAllMethods. (PR: #1836)
    • πŸ‘Œ Improves the documentation of getOverridingExecutable. (PR: #1828)
    • ⬆️ Bump Spoon number in doc. (PR: #1790)

    ♻️ Refactoring

    • πŸ‘Œ Improve Meta-Metamodel classes in src/test. (PR: #1894)
    • ♻️ Refactor cloning code to increase extendability. (PR: #1878)
    • βœ‚ Remove CtParameterReferenceImpl#declaringExecutable. (PR: #1875)
    • Push down the equality checking code in EqualsVisitor. (PR: #1853)
    • πŸ“¦ Hide some methods that are clearly meant to be package visible. (PR: #1855)
    • πŸ“¦ Internal utility type in JDTTreeBuilder should be package-visible. (PR: #1848)
    • πŸ“¦ Package-visible class CommentHelper should have package-visible methods. (PR: #1849)
    • βœ‚ Remove wrong comments and unused imports. (PR: #1803)
    • πŸ–¨ prettyprinter : Restore DJPP#writeHeaders that clients can override. (PR: #1866)

    βœ… Tests

    • architecture : All public API methods should be documented with Javadoc. (PR: #1867)
    • πŸ›  Fix CI failure due to interaction between #1864 and #1787. (PR: #1868)
    • 🚚 Move metamodel related method to class SpoonMetaModel for better discoverability. (PR: #1851)
    • βž• Add method ModelUtils#getOptimizedString for handling EOL, TAB, etc in assertions. (PR: #1804)

    Chores

    • ⚠ Enable unchecked compiler warnings. (PR: #1886)
    • Enables incremental compilation. (PR: #1885)
    • πŸ›  Fix javadoc linter config in pom.xml. (PR: #1881)
    • βž• Add Eclipse's .checkstyle to .gitignore. (PR: #1882)
    • βž• Add a script to update pom.xml for running pit-descartes. (PR: #1820)
    • βž• Add CI script to check whether Spoon compiles with Maven 3.3.9. (PR: #1815)
    • revapi : Fix revapi commenting bot. (PR: #1863)
    • Prepare for next development iteration.

    Authors

    Name Nb Commit
    Martin Monperrus 30
    Pavel Vojtechovsky 21
    Simon Urli 9
    Egor18 4
    Nicolas Harrand 2
    Thomas Durieux 1
    Shantanu 1
  • v6.1.0

    December 20, 2017

    πŸš€ Christmas release! πŸŽ„ πŸŽ… ✨

    πŸš€ The main new feature of this release is the integration of Java 9 module in Spoon model, but it also contains some other new features and bug fixes.
    Thanks for the contributors, merry christmas and happy new year for all of you :)

    πŸ†• New features

    • βž• Add Factory#createQuery(Iterable). (PR: #1777)
    • βž• Add a method to get the unit type of the compilation unit. (PR: #1776)
    • βž• Add support for Java9 constructs in the Spoon metamodel (CtModule and related concepts). (PR: #1730)
    • πŸ‘Œ Support partial evaluation of new Object[]{...}.length -> Literal. (PR: #1750)
    • βž• Add an explicit construct for imports in the metamodel (CtImport). (PR: #1707)
    • βž• Add method hasAnnotation. (PR: #1737)
    • βž• Add inheritance between roles (CtRole#getSuperRole(), CtRole#getSubRole()). (PR: #1725)
    • CtModel implements CtQueryable. (PR: #1739)
    • πŸ–¨ Processor properties can be passed as string. (PR: #1734)

    πŸ› Bug Fixes

    • CompilationUnits are created on demand. (PR: #1782)
    • πŸ–¨ Start prefix space in ElementPrinterHelper. (PR: #1768)
    • πŸ›  Fix a NPE in CtTypeImpl#isSameParameter in noclasspath. (PR: #1767)
    • CtQueryImpl handles well preallocated exceptions done by JVM optimization. (PR: #1759)
    • πŸ›  Fix bug in partial evaluator. (PR: #1751)
    • πŸ›  Fix dirty exception in checking code at the end of model building. (PR: #1749)
    • annotation : Bug when using an annotation targeting declaration and types. (PR: #1774)
    • βœ… test : Improve CtGenerationTest and CtScannerTest. (PR: #1736)

    πŸ“š Documentation

    • βž• Add explanation in Javadoc of CtTypeReference#getActualClass. (PR: #1761)
    • πŸš€ Bump version number after release 6.0.0. (PR: #1732)

    ♻️ Refactoring

    • OutputType is available in Environment. (PR: #1784)
    • CompilationUnit returns an unmodifiable collection. (PR: #1781)
    • Manage sourceOutputDirectory in Environment. (PR: #1770)
    • πŸ‘» SetSourceClasspath throws an exception in case a .class is given. (PR: #1766)
    • βž• Add a new way to build a query in QueryFactory. (PR: #1740)

    βœ… Tests

    • Check inheritance behaviour when using noclasspath with a sourceclasspath. (PR: #1760)
    • ♻️ Refactor test to be independent from JDK version. (PR: #1764)
    • Metamodel's MMField valueTypes are not implicit. (PR: #1756)
    • βž• Add test for substitution of return expression.S() with expressions. (PR: #1755)
    • Prepare upcoming behavioral change in template matcher. (PR: #1748)
    • βž• Add test for getAnnotation().value() on shadow classes. (PR: #1738)

    Other

    • πŸ’… Skip checkstyle in Travis install phase. (PR: #1746)

    Unknown

    • Prepare for next development iteration.

    Authors

    Name Nb Commit
    Simon Urli 20
    Pavel Vojtechovsky 9
    Martin Monperrus 3