google-java-format icon indicating copy to clipboard operation
google-java-format copied to clipboard

Inconsistent blank line between license and package statement

Open sdavids opened this issue 1 year ago • 1 comments

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 avatar Mar 16 '24 21:03 sdavids

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

sdavids avatar Mar 16 '24 21:03 sdavids

https://github.com/google/google-java-format/issues/434

cushon avatar Aug 24 '24 00:08 cushon