mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 08:18:29 +00:00
[jdk9] add support for using lombok with JDK9 code when compiling using the new module syntax, and having module-info.java files in your source.
This commit is contained in:
1 parent
0b2cca0eb9
commit
fee0ad33ab
5 files changed
+84
-1
No files matched your search
@@ -218,6 +218,15 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
|
||||
<classpath refid="build.path" />
|
||||
</ivy:compile>
|
||||
|
||||
<ivy:compile destdir="build/lombok" source="1.9" target="1.9">
|
||||
<compilerarg value="-Xlint:none" />
|
||||
<!-- The above is because javac9 whines about 'service interface provided but not exported or used' for some unfathomable reason. -->
|
||||
<src path="src/core9" />
|
||||
<src path="src/j9stubs" />
|
||||
<!-- This includes org.mapstruct.ap.spi.AstModifyingAnnotationProcessor; putting this on the classpath doesn't work (needs to be internal or a module) so we just add it and then delete the class file for convenience. -->
|
||||
</ivy:compile>
|
||||
<delete file="build/lombok/org/mapstruct/ap/spi/AstModifyingAnnotationProcessor.class" />
|
||||
|
||||
<ivy:compile destdir="build/lombok/Class50" source="1.5" target="1.6" ecj="true" nowarn="true" includeSystemBootclasspath="true">
|
||||
<bootclasspath location="build/stubs" />
|
||||
<src path="src/eclipseAgent" />
|
||||
@@ -281,6 +290,7 @@ lombok.launch.AnnotationProcessorHider$ClaimingProcessor</echo>
|
||||
<fileset dir="." includes="AUTHORS" />
|
||||
<fileset dir="." includes="release-timestamp.txt" />
|
||||
<fileset dir="build/lombok">
|
||||
<include name="module-info.class" />
|
||||
<include name="lombok/*.class" />
|
||||
<include name="lombok/experimental/**" />
|
||||
<include name="lombok/extern/**" />
|
||||
@@ -291,6 +301,7 @@ lombok.launch.AnnotationProcessorHider$ClaimingProcessor</echo>
|
||||
<mappedresources>
|
||||
<fileset dir="build/lombok">
|
||||
<exclude name="com/sun/tools/javac/**" />
|
||||
<exclude name="module-info.class" />
|
||||
<exclude name="lombok/*.class" />
|
||||
<exclude name="lombok/javac/apt/Processor.class" />
|
||||
<exclude name="lombok/experimental/**" />
|
||||
|
||||
@@ -3,7 +3,8 @@ Lombok Changelog
|
||||
|
||||
### v1.16.21 "Edgy Guinea Pig"
|
||||
* v1.16.20 is the latest stable release of Project Lombok.
|
||||
* Potential fix for Netbeans < 9. [Issue #1555](https://github.com/rzwitserloot/lombok/issues/1555)
|
||||
* PLATFORM: Fix for using lombok together with JDK9's new `module-info.java` feature. [Issue #985](https://github.com/rzwitserloot/lombok/issues/985)
|
||||
* BUGFIX: Potential fix for Netbeans < 9. [Issue #1555](https://github.com/rzwitserloot/lombok/issues/1555)
|
||||
|
||||
### v1.16.20 (January 9th, 2018)
|
||||
* PLATFORM: Better support for jdk9 in the new IntelliJ, Netbeans and for Gradle.
|
||||
|
||||
@@ -44,6 +44,9 @@ public class ClassFileMetaData {
|
||||
private static final byte METHOD_HANDLE = 15;
|
||||
private static final byte METHOD_TYPE = 16;
|
||||
private static final byte INVOKE_DYNAMIC = 18;
|
||||
// New in java9: support for modules
|
||||
private static final byte MODULE = 19;
|
||||
private static final byte PACKAGE = 20;
|
||||
|
||||
private static final int NOT_FOUND = -1;
|
||||
private static final int START_OF_CONSTANT_POOL = 8;
|
||||
@@ -79,6 +82,8 @@ public class ClassFileMetaData {
|
||||
case CLASS:
|
||||
case STRING:
|
||||
case METHOD_TYPE:
|
||||
case MODULE:
|
||||
case PACKAGE:
|
||||
position += 2;
|
||||
break;
|
||||
case METHOD_HANDLE:
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
module lombok {
|
||||
requires java.compiler;
|
||||
requires java.instrument;
|
||||
requires jdk.unsupported;
|
||||
|
||||
exports lombok;
|
||||
exports lombok.experimental;
|
||||
exports lombok.extern.apachecommons;
|
||||
exports lombok.extern.java;
|
||||
exports lombok.extern.jbosslog;
|
||||
exports lombok.extern.log4j;
|
||||
exports lombok.extern.slf4j;
|
||||
|
||||
provides javax.annotation.processing.Processor with lombok.launch.AnnotationProcessorHider.AnnotationProcessor;
|
||||
// provides javax.annotation.processing.Processor with lombok.launch.AnnotationProcessorHider.ClaimingProcessor;
|
||||
provides org.mapstruct.ap.spi.AstModifyingAnnotationProcessor with lombok.launch.AnnotationProcessorHider.AstModificationNotifier;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright 2012-2017 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
* and/or other contributors as indicated by the @authors tag. See the
|
||||
* copyright.txt file in the distribution for a full listing of all
|
||||
* contributors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.mapstruct.ap.spi;
|
||||
|
||||
import javax.lang.model.type.TypeMirror;
|
||||
|
||||
/**
|
||||
* A contract to be implemented by other annotation processors which - against the design philosophy of JSR 269 - alter
|
||||
* the types under compilation.
|
||||
* <p>
|
||||
* This contract will be queried by MapStruct when examining types referenced by mappers to be generated, most notably
|
||||
* the source and target types of mapping methods. If at least one AST-modifying processor announces further changes to
|
||||
* such type, the generation of the affected mapper(s) will be deferred to a future round in the annnotation processing
|
||||
* cycle.
|
||||
* <p>
|
||||
* Implementations are discovered via the service loader, i.e. a JAR providing an AST-modifying processor needs to
|
||||
* declare its implementation in a file {@code META-INF/services/org.mapstruct.ap.spi.AstModifyingAnnotationProcessor}.
|
||||
*
|
||||
* @author Gunnar Morling
|
||||
*/
|
||||
//@org.mapstruct.util.Experimental
|
||||
public interface AstModifyingAnnotationProcessor {
|
||||
|
||||
/**
|
||||
* Whether the specified type has been fully processed by this processor or not (i.e. this processor will amend the
|
||||
* given type's structure after this invocation).
|
||||
*
|
||||
* @param type The type of interest
|
||||
* @return {@code true} if this processor has fully processed the given type, {@code false} otherwise.
|
||||
*/
|
||||
boolean isTypeComplete(TypeMirror type);
|
||||
}
|
||||
Reference in new issue
Block a user