Top Description Inners Fields Constructors Methods
com.sun.tools.javac.comp

public Class Analyzer

extends Object
Class Inheritance
Imports
java.util.ArrayDeque, .Arrays, .EnumSet, .HashMap, .Map, .Queue, java.util.stream.Collectors, com.sun.source.tree.LambdaExpressionTree, .NewClassTree, .VariableTree, com.sun.tools.javac.code.Flags, .Kinds.Kind, .Source, .Source.Feature, .Symbol.ClassSymbol, .Type, .Types, com.sun.tools.javac.comp.ArgumentAttr.LocalCacheContext, .DeferredAttr.AttributionMode, com.sun.tools.javac.resources.CompilerProperties.Warnings, com.sun.tools.javac.tree.JCTree, .JCTree.JCBlock, .JCTree.JCClassDecl, .JCTree.JCDoWhileLoop, .JCTree.JCEnhancedForLoop, .JCTree.JCForLoop, .JCTree.JCIf, .JCTree.JCLambda, .JCTree.JCLambda.ParameterKind, .JCTree.JCMethodDecl, .JCTree.JCMethodInvocation, .JCTree.JCNewClass, .JCTree.JCStatement, .JCTree.JCSwitch, .JCTree.JCTry, .JCTree.JCTypeApply, .JCTree.JCUnary, .JCTree.JCVariableDecl, .JCTree.JCWhileLoop, .JCTree.Tag, .TreeCopier, .TreeInfo, .TreeMaker, .TreeScanner, com.sun.tools.javac.util.Assert, .Context, .DefinedBy, .DefinedBy.Api, .DiagnosticSource, .JCDiagnostic.DiagnosticType, .List, .ListBuffer, .Log, .Options, .Position

Helper class for defining custom code analysis, such as finding instance creation expression that can benefit from diamond syntax.

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv class
Analyzer.AnalyzerCopier

Subclass of TreeCopier that maps nodes matched by analyzers onto new AST nodes.

pack-priv static enum
Analyzer.AnalyzerMode

This enum defines supported analyzer modes, as well as defining the logic for decoding the -XDfind option.

pack-priv static interface
Analyzer.DeferredAnalysisHelper

Helper interface to handle deferral of analysis tasks.

pack-priv class
Analyzer.DiamondInitializer

This analyzer checks if generic instance creation expression can use diamond syntax.

pack-priv class
Analyzer.LambdaAnalyzer

This analyzer checks if anonymous instance creation expression can replaced by lambda.

pack-priv class
Analyzer.RedundantLocalVarTypeAnalyzer

This analyzer checks if a local variable declaration has redundant type.

pack-priv abstract class
Analyzer.RedundantLocalVarTypeAnalyzerBase<X extends JCTree.JCStatement>

Base class for local variable inference analyzers.

pack-priv class
Analyzer.RedundantLocalVarTypeAnalyzerForEach

This analyzer checks if a for each variable declaration has redundant type.

pack-priv class
Analyzer.RedundantTypeArgAnalyzer

This analyzer checks if generic method call has redundant type arguments.

pack-priv class
pack-priv abstract class
Analyzer.StatementAnalyzer<S extends JCTree, T extends JCTree>

A statement analyzer is a work-unit that matches certain AST nodes (of given type S), rewrites them to different AST nodes (of type T) and then generates some meaningful messages in case the analysis has been successful.

pack-priv class
Analyzer.StatementScanner

Subclass of com.sun.tools.javac.tree.TreeScanner which visit AST-nodes w/o crossing statement boundaries.

pack-priv class

Field Summary

Modifier and TypeField and Description
private final boolean
protected static final Context.Key<Analyzer>
pack-priv final EnumSet<Analyzer.AnalyzerMode>
pack-priv Analyzer.StatementAnalyzer<JCTree, JCTree>[]
pack-priv final ArgumentAttr
pack-priv final Attr
pack-priv final Analyzer.AnalyzerCopier
pack-priv Analyzer.DeferredAnalysisHelper
pack-priv final DeferredAttr
pack-priv Analyzer.DeferredAnalysisHelper
flushDeferredHelper

Dummy deferral handler.

pack-priv final Log
pack-priv final TreeMaker
pack-priv Analyzer.DeferredAnalysisHelper
queueDeferredHelper

Simple deferral handler.

pack-priv final Types

Constructor Summary

AccessConstructor and Description
protected
Analyzer(Context context)

Method Summary

Modifier and TypeMethod and Description
protected void
analyze(JCTree.JCStatement statement, Env<AttrContext> env)

Analyze an AST node; this involves collecting a list of all the nodes that needs rewriting, and speculatively type-check the rewritten code to compare results against previously attributed code.

pack-priv void
analyzeIfNeeded(JCTree tree, Env<AttrContext> env)

Analyze an AST node if needed.

pack-priv Env<AttrContext>
copyEnvIfNeeded(JCTree tree, Env<AttrContext> env)

Create a copy of Env if needed.

pack-priv void
public void
flush(Env<AttrContext> flushEnv)

public static Analyzer
instance(Context context)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait