google / google-java-format

Reformats Java source code to comply with Google Java Style.
Other
5.49k stars 848 forks source link

Inconsistent blank line between license and package statement #1084

Open sdavids opened 3 months ago

sdavids commented 3 months ago

Expected Behavior

/* File header */
package ...

/* File header */

package ...

Current Behavior

/* File header */
package ...

/* File header */
package ...

Corresponding Section in Java Style Guide

Source file structure

A source file consists of, in order:

License or copyright information, if present Package statement Import statements Exactly one top-level class Exactly one blank line separates each section that is present.

https://google.github.io/styleguide/javaguide.html#s3-source-file-structure

Test Cases

/var/tmp $ curl -L -O -s https://github.com/google/google-java-format/releases/download/v1.21.0/google-java-format-1.21.0-all-deps.jar

/var/tmp $ printf '/* File header */\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */
package p;

class PackageHeader {}

/var/tmp $ printf '/* File header */\n\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */

package p;

class PackageHeader {}

/var/tmp $ printf '/* File header */\n\n\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */

package p;

class PackageHeader {}

/var/tmp $ printf '/* File header */\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */
@NonNullApi
package com.baeldung.nullibility;

import org.springframework.lang.NonNullApi;

/var/tmp $ printf '/* File header */\n\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */

@NonNullApi
package com.baeldung.nullibility;

import org.springframework.lang.NonNullApi;

/var/tmp $ printf '/* File header */\n\n\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */

@NonNullApi
package com.baeldung.nullibility;

import org.springframework.lang.NonNullApi;
sdavids commented 3 months ago

Maybe related: https://github.com/google/google-java-format/issues/235