Skip to content

Commit

Permalink
Upgrade stubparser to latest upstream JavaParser
Browse files Browse the repository at this point in the history
This makes the Stub Parser able to handle more Java syntax correctly.
  • Loading branch information
Bohdankm22 authored and mernst committed Aug 13, 2017
1 parent 0803a83 commit 8997a34
Show file tree
Hide file tree
Showing 166 changed files with 1,177 additions and 33,757 deletions.
14 changes: 7 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ matrix:
env:
## Jobs used when downloading JDK during testing.
## all-tests = junit + nonjunit + demos. Separately, test building the JDK.
- BUILDJDK=downloadjdk JDKVER=jdk7 GROUP=all-tests
- BUILDJDK=downloadjdk JDKVER=jdk7 GROUP=jdk.jar
- BUILDJDK=downloadjdk JDKVER=jdk8 GROUP=all-tests
- BUILDJDK=downloadjdk JDKVER=jdk8 GROUP=jdk.jar
- BUILDJDK=downloadjdk JDKVER=jdk7 GROUP=downstream
- BUILDJDK=downloadjdk JDKVER=jdk8 GROUP=downstream
#TODO - BUILDJDK=downloadjdk JDKVER=jdk9 GROUP=all-tests
#TODO - BUILDJDK=downloadjdk JDKVER=jdk9 GROUP=jdk.jar
#TODO - BUILDJDK=downloadjdk JDKVER=jdk9 GROUP=downstream
- BUILDJDK=downloadjdk JDKVER=jdkany GROUP=misc
## Jobs used when building JDK during testing.
# - BUILDJDK=buildjdk JDKVER=jdk7 GROUP=junit
# - BUILDJDK=buildjdk JDKVER=jdk7 GROUP=nonjunit
# - BUILDJDK=buildjdk JDKVER=jdk7 GROUP=demos
# - BUILDJDK=buildjdk JDKVER=jdk8 GROUP=junit
# - BUILDJDK=buildjdk JDKVER=jdk8 GROUP=nonjunit
# - BUILDJDK=buildjdk JDKVER=jdk8 GROUP=demos
# - BUILDJDK=buildjdk JDKVER=jdk7 GROUP=downstream
# - BUILDJDK=buildjdk JDKVER=jdk8 GROUP=downstream
# - BUILDJDK=buildjdk JDKVER=jdk9 GROUP=junit
# - BUILDJDK=buildjdk JDKVER=jdk9 GROUP=nonjunit
# - BUILDJDK=buildjdk JDKVER=jdk9 GROUP=demos
# - BUILDJDK=buildjdk JDKVER=jdk9 GROUP=downstream
# - BUILDJDK=buildjdk JDKVER=jdkany GROUP=misc


Expand Down
1 change: 0 additions & 1 deletion README-developers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ This repository contains several related projects:

framework the "framework" aspects of the Checker Framework
checker the type checkers provided with the Checker Framework
stubparser a parser for Java source code that supports type annotations
javacutil utilities for javac
dataflow a dataflow framework

Expand Down
7 changes: 3 additions & 4 deletions build-common.properties
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ annotation-file-utilities.lib=${annotation-file-utilities.loc}/annotation-file-u

# The location and libraries for all sub-projects

stubparser.loc=${checkerframework}/stubparser
stubparser.lib=${stubparser.loc}/dist/stubparser.jar

javacutil.loc=${checkerframework}/javacutil
javacutil.lib=${javacutil.loc}/dist/javacutil.jar
javacutil.sources.lib=${javacutil.loc}/dist/javacutil-source.jar
Expand All @@ -59,9 +56,12 @@ framework.lib=${framework.loc}/dist/framework.jar

junit.lib=${framework.loc}/tests/junit-4.12.jar
hamcrest.lib=${framework.loc}/tests/hamcrest-core-1.3.jar
javaparser.core.lib=${framework.loc}/lib/javaparser-core.jar

checker.loc=${checkerframework}/checker
checker.lib=${checker.loc}/dist/checker.jar
# Place to store compilation results to avoid overwriting them.
checker.lib.tmp=${checker.loc}/dist/checker-tmp.jar
checker.qual.lib=${checker.loc}/dist/checker-qual.jar
checker.qual.sources.lib=${checker.loc}/dist/checker-qual-source.jar
checker.compat.qual.lib=${checker.loc}/dist/checker-compat-qual.jar
Expand All @@ -73,7 +73,6 @@ checker.javadoc.lib=${checker.loc}/dist/checker-javadoc.jar
checker.jdk8orhigher.sources=org/checkerframework/checker/nullness/Opt.java



# How to find the error-prone compiler
# TODO: currently you have to copy this .jar to ~/.ant/lib
# How can we set this from here?
Expand Down
4 changes: 2 additions & 2 deletions build-styleguide.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@

<!-- These variables contain commands, not lists of files. -->
<!-- keep these two lists in sync -->
<property name="style.grep.files" value="--exclude-dir=.git --exclude-dir=annotated --exclude-dir=api --exclude-dir=bib --exclude-dir=bootstrap --exclude-dir=build --exclude-dir=jdk --exclude-dir=maven-artifacts --exclude-dir=stubparser --exclude='*.aux' --exclude='*.bib' --exclude='*.class' --exclude='*.dvi' --exclude='*.expected' --exclude='*.gif' --exclude='*.jar' --exclude='*.jtr' --exclude='*.log' --exclude='*.out' --exclude='*.patch' --exclude='*.pdf' --exclude='*.png' --exclude='*.sty' --exclude='*.xcf' --exclude='*~' --exclude='#*#' --exclude='CFLogo.ai' --exclude='logfile.log.rec.index' --exclude='manual.html' --exclude='manual.html-e' --exclude='junit*.properties' ."/>
<property name="style.find.files" value=". -not ( -name .git -prune ) -not ( -name annotated -prune ) -not ( -name api -prune ) -not ( -name bib -prune ) -not ( -name bootstrap -prune ) -not ( -name build -prune ) -not ( -name jdk -prune ) -not ( -path maven-artifacts -prune ) -not ( -path stubparser -prune ) -not ( -name '*.aux' ) -not ( -name '*.bib' ) -not ( -name '*.class' ) -not ( -name '*.dvi' ) -not ( -name '*.expected' ) -not ( -name '*.gif' ) -not ( -name '*.jar' ) -not ( -name '*.log' ) -not ( -name '*.out' ) -not ( -name '*.patch' ) -not ( -name '*.pdf' ) -not ( -name '*.png' ) -not ( -name 'junit*.properties' ) -not ( -name '*~' ) -not ( -name '#*#' ) -not ( -name 'manual.html' ) -not ( -name 'manual.html-e' ) -not ( -empty ) -type f"/>
<property name="style.grep.files" value="--exclude-dir=.git --exclude-dir=annotated --exclude-dir=api --exclude-dir=bib --exclude-dir=bootstrap --exclude-dir=build --exclude-dir=jdk --exclude-dir=maven-artifacts --exclude='*.aux' --exclude='*.bib' --exclude='*.class' --exclude='*.dvi' --exclude='*.expected' --exclude='*.gif' --exclude='*.jar' --exclude='*.jtr' --exclude='*.log' --exclude='*.out' --exclude='*.patch' --exclude='*.pdf' --exclude='*.png' --exclude='*.sty' --exclude='*.xcf' --exclude='*~' --exclude='#*#' --exclude='CFLogo.ai' --exclude='logfile.log.rec.index' --exclude='manual.html' --exclude='manual.html-e' --exclude='junit*.properties' ."/>
<property name="style.find.files" value=". -not ( -name .git -prune ) -not ( -name annotated -prune ) -not ( -name api -prune ) -not ( -name bib -prune ) -not ( -name bootstrap -prune ) -not ( -name build -prune ) -not ( -name jdk -prune ) -not ( -path maven-artifacts -prune ) -not ( -name '*.aux' ) -not ( -name '*.bib' ) -not ( -name '*.class' ) -not ( -name '*.dvi' ) -not ( -name '*.expected' ) -not ( -name '*.gif' ) -not ( -name '*.jar' ) -not ( -name '*.log' ) -not ( -name '*.out' ) -not ( -name '*.patch' ) -not ( -name '*.pdf' ) -not ( -name '*.png' ) -not ( -name 'junit*.properties' ) -not ( -name '*~' ) -not ( -name '#*#' ) -not ( -name 'manual.html' ) -not ( -name 'manual.html-e' ) -not ( -empty ) -type f"/>

<loadresource property="style.find.files.quoted">
<propertyresource name="style.find.files"/>
Expand Down
10 changes: 1 addition & 9 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,6 @@
<ant dir="javacutil">
<target name="javadoc"/>
</ant>
<ant dir="stubparser">
<target name="javadoc"/>
</ant>
</target>

<target name="javadoc-private"
Expand Down Expand Up @@ -156,7 +153,7 @@

<fileset id="formatted.java.files" dir="."
includes="**/*.java"
excludes="checker/jdk/,stubparser/,checker/tests/nullness-javac-errors/,framework/tests/whole-program-inference/annotated/"/>
excludes="checker/jdk/,checker/tests/nullness-javac-errors/,framework/tests/whole-program-inference/annotated/"/>

<import file="./build-styleguide.xml"/>

Expand All @@ -175,9 +172,6 @@
<ant dir="javacutil">
<target name="tags"/>
</ant>
<ant dir="stubparser">
<target name="tags"/>
</ant>
<exec executable="make" dir="docs/manual" failonerror="true">
<arg value="tags"/>
</exec>
Expand All @@ -191,8 +185,6 @@
<arg value="-i"/>
<arg value="javacutil/TAGS"/>
<arg value="-i"/>
<arg value="stubparser/TAGS"/>
<arg value="-i"/>
<arg value="docs/manual/TAGS"/>
</exec>
</target>
Expand Down
13 changes: 13 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
---------------------------------------------------------------------------

Version 2.2.0, ?? 2017

A Java 8 JVM is required to run the Checker Framework.
You can still typecheck and compile Java 7 (or earlier) code.

The stub file format has changed to be more similar to regular Java syntax.
Most notably, receiver annotations are written using standard Java 8 syntax
(a special first formal paramter named "this") and inner classes are written
using standard Java syntax (rather than at the top level using a name that
contains "$". You need to update your stub files to conform to the new syntax.

---------------------------------------------------------------------------

Version 2.1.14, 3 August 2017

Nullness Checker change to annotated JDK: The type argument to the Class,
Expand Down
2 changes: 1 addition & 1 deletion checker/bin-devel/git.pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ set -e
# Need to keep checked files in sync with formatted.java.files in
# build.xml. Otherwise `ant reformat` might not reformat a file that this
# hook complains about.
CHANGED_JAVA_FILES=`git diff --staged --name-only --diff-filter=ACM | grep '\.java$' | grep -v '/jdk/' | grep -v '/stubparser/' | grep -v '/eclipse/' ` || true
CHANGED_JAVA_FILES=`git diff --staged --name-only --diff-filter=ACM | grep '\.java$' | grep -v '/jdk/' | grep -v '/eclipse/' ` || true
# echo CHANGED_JAVA_FILES "'"${CHANGED_JAVA_FILES}"'"
if [ ! -z "$CHANGED_JAVA_FILES" ]; then
ant -silent update-run-google-java-format
Expand Down
2 changes: 1 addition & 1 deletion checker/bin-devel/javac
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ annoToolsDir="${cfDir}"/../annotation-tools
# Put afu jar files last, as they might contain out-of-date CF files.
# Put "checker" after the other sub-projects, as "ant bindist" puts
# other projects into the checker/build directory.
buildDirs="${cfDir}"/dataflow/build:"${cfDir}"/javacutil/build:"${cfDir}"/stubparser/build:"${cfDir}"/framework/build:"${cfDir}"/checker/build:"${annoToolsDir}"/scene-lib/bin:"${annoToolsDir}"/annotation-file-utilities/annotation-file-utilities.jar
buildDirs="${cfDir}"/dataflow/build:"${cfDir}"/javacutil/build:"${cfDir}"/framework/build:"${cfDir}"/checker/build:"${cfDir}"/checker/lib/javaparser-core.jar:"${annoToolsDir}"/scene-lib/bin:"${annoToolsDir}"/annotation-file-utilities/annotation-file-utilities.jar

## Preserve quoting and spaces in arguments, which would otherwise be lost
## due to being passed through the shell twice.
Expand Down
2 changes: 1 addition & 1 deletion checker/bin-devel/javac-debug
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ annoToolsDir="${cfDir}"/../annotation-tools
# Put afu jar files last, as they might contain out-of-date CF files.
# Put "checker" after the other sub-projects, as "ant bindist" puts
# other projects into the checker/build directory.
buildDirs="${cfDir}"/dataflow/build:"${cfDir}"/javacutil/build:"${cfDir}"/stubparser/build:"${cfDir}"/framework/build:"${cfDir}"/checker/build:"${annoToolsDir}"/scene-lib/bin:"${annoToolsDir}"/annotation-file-utilities/annotation-file-utilities.jar
buildDirs="${cfDir}"/dataflow/build:"${cfDir}"/javacutil/build:"${cfDir}"/framework/build:"${cfDir}"/checker/build:"${annoToolsDir}"/scene-lib/bin:"${annoToolsDir}"/annotation-file-utilities/annotation-file-utilities.jar

## Preserve quoting and spaces in arguments, which would otherwise be lost
## due to being passed through the shell twice.
Expand Down
34 changes: 10 additions & 24 deletions checker/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -207,11 +207,6 @@
<!-- Exclude ManualTaglet to not depend on javadoc. -->
<exclude name="**/javacutil/dist/**"/>
</fileset>
<!-- Do not re-compile the stubparser, as it is not lint clean.
<fileset dir="${stubparser.loc}/${src}">
<include name="**/*.java"/>
</fileset>
-->
<fileset dir="${dataflow.loc}/${src}">
<include name="**/*.java"/>
</fileset>
Expand All @@ -225,7 +220,7 @@
<echo message="${src.files.spaceseparated}" file="${tmpdir}/srcfiles-checker.txt"/>
<java fork="true"
failonerror="true"
classpath="${javac.lib}:${framework.lib}:${junit.lib}:${hamcrest.lib}:${annotation-file-utilities.lib}"
classpath="${javac.lib}:${framework.lib}:${javaparser.core.lib}:${junit.lib}:${hamcrest.lib}:${annotation-file-utilities.lib}"
classname="com.sun.tools.javac.Main">
<jvmarg value="-Xbootclasspath/p:${javac.lib}"/>
<arg value="-g"/>
Expand Down Expand Up @@ -292,7 +287,7 @@
<!-- With Ant 1.9.4 or later, add to each javadoc task:
failonwarning="true"
but Travis is stuck on Ant 1.8.2 as of 6/2016 -->
<javadoc sourcepath="${javacutil.loc}/${src}:${dataflow.loc}/${src}:${stubparser.loc}/${src}:${framework.loc}/${src}:${annotation-file-utilities.loc}/${src}"
<javadoc sourcepath="${javacutil.loc}/${src}:${dataflow.loc}/${src}:${framework.loc}/${src}:${annotation-file-utilities.loc}/${src}"
destdir="${api.doc}"
private="${javadoc.private}"
encoding="UTF-8"
Expand All @@ -305,7 +300,6 @@

<package name="org.checkerframework.javacutil.*"/>
<package name="org.checkerframework.dataflow.*"/>
<package name="org.checkerframework.stubparser.*"/>
<package name="org.checkerframework.framework.*"/>
<package name="org.checkerframework.common.*"/>
<package name="org.checkerframework.checker.*"/>
Expand Down Expand Up @@ -354,7 +348,6 @@
<fileset dir="${framework.loc}/${src}"/>
<fileset dir="${dataflow.loc}/${src}"/>
<fileset dir="${javacutil.loc}/${src}"/>
<fileset dir="${stubparser.loc}/${src}"/>
</copy>

<jar destfile="${checker.sources.lib}" basedir="${checker-sources-tmp}"/>
Expand All @@ -366,22 +359,22 @@

<mkdir dir="dist" />

<!-- Only unjar the afu and stubparser - everything else is recompiled. -->

<!-- jar up compilation results to protect against being
overwritten by unjarring annotation-file-utilities.lib.
See https://github.com/typetools/checker-framework/issues/894 -->
<jar destfile="${checker.lib}" basedir="${build}" excludes="polyall/,tests/,lubglb/,jtreg/,reports/"/>

<!-- Only unjar the stubparser and afu - everything else is recompiled. -->
<jar destfile="${checker.lib.tmp}" basedir="${build}" excludes="polyall/,tests/,lubglb/,jtreg/,reports/"/>
<unjar src="${annotation-file-utilities.lib}" dest="${build}" />
<!-- Also delete anything in the org/checkerframework package in case it has be removed
from the framework-->
<delete includeemptydirs="true">
<fileset dir="${build}/org/checkerframework"/>
</delete>

<unjar src="${stubparser.lib}" dest="${build}" />
<!-- Work-around for Issue 894, see above. -->
<unjar src="${checker.lib}" dest="${build}" />
<unjar src="${checker.lib.tmp}" dest="${build}" />

<unjar src="${javaparser.core.lib}" dest="${build}" />

<jar destfile="${checker.lib}" basedir="${build}" excludes="polyall/,tests/,lubglb/,jtreg/,reports/">
<manifest>
Expand Down Expand Up @@ -1274,13 +1267,6 @@ So, use our own archived version.
<exclude name="**/javacutil/dist/**"/>
</fileset>

<fileset dir="${stubparser.loc}/${src}">
<include name="**/*.java"/>
<!-- Ignore the huge, auto-generated parser.
TODO: might be a nice benchmark for performance optimization? -->
<exclude name="**/AST*.java"/>
<exclude name="**/Token.java"/>
</fileset>
<!-- Do not check dataflow, it doesn't have all purity
annotations. TODO: should be easy to fix. Or solved
once we inherit those annotations.
Expand Down Expand Up @@ -1434,8 +1420,8 @@ So, use our own archived version.
<javac failonerror="true"
includeantruntime="false"
debug="true"
classpath="${checker.lib}:${junit.lib}:${hamcrest.lib}"
srcdir="${framework.loc}/${src}:${dataflow.loc}/${src}:${javacutil.loc}/${src}:${stubparser.loc}/${src}:${src}"
classpath="${checker.lib}:${javaparser.core.lib}:${junit.lib}:${hamcrest.lib}"
srcdir="${framework.loc}/${src}:${dataflow.loc}/${src}:${javacutil.loc}/${src}:${src}"
includes="**/*.java"
excludes="**/javacutil/dist/**"
compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"
Expand Down
2 changes: 1 addition & 1 deletion checker/eclipse/Checkers - Interning.launch
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;jsr308-langtools&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.checkerframework.checker&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jsr308-langtools&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;stubparser&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;jsr308-langtools&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
Expand Down
2 changes: 1 addition & 1 deletion checker/eclipse/Checkers - Nullness.launch
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;jsr308-langtools&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.checkerframework.checker&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jsr308-langtools&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;stubparser&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot; type=&quot;1&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;jsr308-langtools&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
Expand Down
4 changes: 2 additions & 2 deletions checker/jtreg/nullness/issue824/Class1.astub
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;

public <F extends @NonNull Object> void wildcardExtends(Gen<? extends F> class1);
public <F extends @NonNull Object> void wildcardSuper(Gen<@NonNull ? super F> class1);
}

class Class1$Gen<F extends @NonNull Object> {}
class Gen<F extends @NonNull Object> {}
}
8 changes: 4 additions & 4 deletions checker/jtreg/nullness/issue824/First.astub
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import org.checkerframework.checker.nullness.qual.Nullable;

public class First {
public static <T extends @Nullable Object> void method(Supplier<T> supplier, Callable<@Nullable ? super T> callable) {}
}
public static <T extends @Nullable Object> void method(Supplier<T> supplier, Callable<@Nullable ? super T> callable) {}

public interface First$Supplier<T extends @Nullable Object> {}
public interface Supplier<T extends @Nullable Object> {}

public interface First$Callable<T extends @Nullable Object> {}
public interface Callable<T extends @Nullable Object> {}
}
Loading

0 comments on commit 8997a34

Please sign in to comment.