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 BlockIdentifier
private 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 TypeMethodDescriptionvoid
boolean
alwaysDefines
(LValue scopedEntity) private boolean
void
collectTypeUsages
(TypeUsageCollector collector) void
void
void
void
static Block
getBlockFor
(boolean indenting, StructuredStatement... statements) (package private) static Block
getEmptyBlock
(boolean indenting) getLast()
getNextAfter
(int x) boolean
boolean
boolean
boolean
boolean
void
void
markCreator
(LValue scopedEntity, StatementContainer<StructuredStatement> hint) boolean
match
(MatchIterator<StructuredStatement> matchIterator, MatchResultCollector matchResultCollector) boolean
void
void
void
replaceBlockStatements
(Collection<Op04StructuredStatement> statements) private void
void
rewriteExpressions
(ExpressionRewriter expressionRewriter) void
setIndenting
(boolean indenting) boolean
void
traceLocalVariableScope
(LValueScopeDiscoverer scopeDiscoverer) void
transformStructuredChildren
(StructuredStatementTransformer transformer, StructuredScope scope) void
transformStructuredChildrenInReverse
(StructuredStatementTransformer transformer, StructuredScope scope) Methods inherited from class org.benf.cfr.reader.bytecode.analysis.structured.statement.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:
inlineable
in interfaceStructuredStatement
- Overrides:
inlineable
in classAbstractStructuredStatement
-
getInline
- Specified by:
getInline
in interfaceStructuredStatement
- Overrides:
getInline
in classAbstractStructuredStatement
-
combineInlineable
public void combineInlineable() -
replaceInlineSource
-
extractLabelledBlocks
public void extractLabelledBlocks() -
combineTryCatch
public void combineTryCatch() -
isScopeBlock
public boolean isScopeBlock()- Specified by:
isScopeBlock
in interfaceStructuredStatement
- Overrides:
isScopeBlock
in classAbstractStructuredStatement
-
transformStructuredChildren
public void transformStructuredChildren(StructuredStatementTransformer transformer, StructuredScope scope) -
transformStructuredChildrenInReverse
public void transformStructuredChildrenInReverse(StructuredStatementTransformer transformer, StructuredScope scope) - Specified by:
transformStructuredChildrenInReverse
in interfaceStructuredStatement
- Overrides:
transformStructuredChildrenInReverse
in classAbstractStructuredStatement
-
getNextAfter
-
statementIsLast
-
getBreakableBlockOrNull
- Specified by:
getBreakableBlockOrNull
in interfaceStructuredStatement
- Overrides:
getBreakableBlockOrNull
in classAbstractStructuredStatement
-
isRecursivelyStructured
public boolean isRecursivelyStructured()- Specified by:
isRecursivelyStructured
in interfaceStructuredStatement
- Overrides:
isRecursivelyStructured
in classAbstractStructuredStatement
-
getBlockStatements
-
replaceBlockStatements
-
linearizeInto
-
traceLocalVariableScope
-
markCreator
- Specified by:
markCreator
in interfaceStructuredStatement
- Overrides:
markCreator
in classAbstractStructuredStatement
-
alwaysDefines
- Specified by:
alwaysDefines
in interfaceStructuredStatement
- Overrides:
alwaysDefines
in 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:
match
in interfaceMatcher<StructuredStatement>
- Overrides:
match
in classAbstractStructuredStatement
-
rewriteExpressions
-
isEffectivelyNOP
public boolean isEffectivelyNOP()- Specified by:
isEffectivelyNOP
in interfaceStructuredStatement
- Overrides:
isEffectivelyNOP
in classAbstractStructuredStatement
-