Class Block
java.lang.Object
org.benf.cfr.reader.bytecode.analysis.structured.statement.AbstractStructuredStatement
org.benf.cfr.reader.bytecode.analysis.structured.statement.Block
- All Implemented Interfaces:
HasByteCodeLoc, Matcher<StructuredStatement>, StructuredStatement, Dumpable, TypeUsageCollectable
- Direct Known Subclasses:
WildcardMatch.BlockWildcard
TODO : Block implements way more functionality than it should - move into callers.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate BlockIdentifierprivate LinkedList<Op04StructuredStatement> private boolean -
Constructor Summary
ConstructorsConstructorDescriptionBlock(LinkedList<Op04StructuredStatement> containedStatements, boolean indenting) Block(LinkedList<Op04StructuredStatement> containedStatements, boolean indenting, BlockIdentifier blockIdentifier) Block(Op04StructuredStatement statement) -
Method Summary
Modifier and TypeMethodDescriptionvoidbooleanalwaysDefines(LValue scopedEntity) private booleanvoidcollectTypeUsages(TypeUsageCollector collector) voidvoidvoidvoidstatic BlockgetBlockFor(boolean indenting, StructuredStatement... statements) (package private) static BlockgetEmptyBlock(boolean indenting) getLast()getNextAfter(int x, boolean skipComments) booleanbooleanbooleanbooleanbooleanvoidvoidmarkCreator(LValue scopedEntity, StatementContainer<StructuredStatement> hint) booleanmatch(MatchIterator<StructuredStatement> matchIterator, MatchResultCollector matchResultCollector) booleanvoidvoidvoidreplaceBlockStatements(Collection<Op04StructuredStatement> statements) private voidvoidrewriteExpressions(ExpressionRewriter expressionRewriter) voidsetIndenting(boolean indenting) booleanvoidtraceLocalVariableScope(LValueScopeDiscoverer scopeDiscoverer) voidtransformStructuredChildren(StructuredStatementTransformer transformer, StructuredScope scope) voidtransformStructuredChildrenInReverse(StructuredStatementTransformer transformer, StructuredScope scope) Methods inherited from class AbstractStructuredStatement
addLoc, canDefine, canFall, claimBlock, fallsNopToNext, findCreatedHere, getContainer, getLoc, informBlockHeirachy, isProperlyStructured, setContainer, suggestName, supportsBreak, supportsContinueBreak, toString
-
Field Details
-
containedStatements
-
indenting
private boolean indenting -
blockIdentifier
-
-
Constructor Details
-
Block
-
Block
-
Block
public Block(LinkedList<Op04StructuredStatement> containedStatements, boolean indenting, BlockIdentifier blockIdentifier)
-
-
Method Details
-
getCombinedLoc
-
flattenOthersIn
public void flattenOthersIn() -
addStatement
-
getEmptyBlock
-
getBlockFor
-
collectTypeUsages
-
removeLastContinue
-
removeLastNVReturn
public void removeLastNVReturn() -
removeLastGoto
public void removeLastGoto() -
getLast
-
removeLastEndWhile
-
getOneStatementIfPresent
-
getFilteredBlockStatements
-
getMaybeJustOneStatement
-
inlineable
public boolean inlineable()- Specified by:
inlineablein interfaceStructuredStatement- Overrides:
inlineablein classAbstractStructuredStatement
-
getInline
- Specified by:
getInlinein interfaceStructuredStatement- Overrides:
getInlinein classAbstractStructuredStatement
-
combineInlineable
public void combineInlineable() -
replaceInlineSource
-
extractLabelledBlocks
public void extractLabelledBlocks() -
combineTryCatch
public void combineTryCatch() -
isScopeBlock
public boolean isScopeBlock()- Specified by:
isScopeBlockin interfaceStructuredStatement- Overrides:
isScopeBlockin classAbstractStructuredStatement
-
transformStructuredChildren
public void transformStructuredChildren(StructuredStatementTransformer transformer, StructuredScope scope) -
transformStructuredChildrenInReverse
public void transformStructuredChildrenInReverse(StructuredStatementTransformer transformer, StructuredScope scope) - Specified by:
transformStructuredChildrenInReversein interfaceStructuredStatement- Overrides:
transformStructuredChildrenInReversein classAbstractStructuredStatement
-
getNextAfter
-
statementIsLast
-
getBreakableBlockOrNull
- Specified by:
getBreakableBlockOrNullin interfaceStructuredStatement- Overrides:
getBreakableBlockOrNullin classAbstractStructuredStatement
-
isRecursivelyStructured
public boolean isRecursivelyStructured()- Specified by:
isRecursivelyStructuredin interfaceStructuredStatement- Overrides:
isRecursivelyStructuredin classAbstractStructuredStatement
-
getBlockStatements
-
replaceBlockStatements
-
linearizeInto
-
traceLocalVariableScope
-
markCreator
- Specified by:
markCreatorin interfaceStructuredStatement- Overrides:
markCreatorin classAbstractStructuredStatement
-
alwaysDefines
- Specified by:
alwaysDefinesin interfaceStructuredStatement- Overrides:
alwaysDefinesin classAbstractStructuredStatement
-
canFoldUp
private boolean canFoldUp() -
dump
-
isIndenting
public boolean isIndenting() -
setIndenting
public void setIndenting(boolean indenting) -
match
public boolean match(MatchIterator<StructuredStatement> matchIterator, MatchResultCollector matchResultCollector) - Specified by:
matchin interfaceMatcher<StructuredStatement>- Overrides:
matchin classAbstractStructuredStatement
-
rewriteExpressions
-
isEffectivelyNOP
public boolean isEffectivelyNOP()- Specified by:
isEffectivelyNOPin interfaceStructuredStatement- Overrides:
isEffectivelyNOPin classAbstractStructuredStatement
-