mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
UAST value analysis: perform variable merge more accurately
In particular, Phis are now lifted inside variables & dependent, whenever it's possible
This commit is contained in:
@@ -91,9 +91,11 @@ open class UDependentValue protected constructor(
|
||||
override fun merge(other: UValue) = when (other) {
|
||||
this -> this
|
||||
value -> this
|
||||
is UVariableValue -> other.merge(this)
|
||||
is UDependentValue -> {
|
||||
if (value != other.value) UPhiValue.create(this, other)
|
||||
else UDependentValue(value, dependencies + other.dependencies)
|
||||
val allDependencies = dependencies + other.dependencies
|
||||
if (value != other.value) UDependentValue(value.merge(other.value), allDependencies)
|
||||
else UDependentValue(value, allDependencies)
|
||||
}
|
||||
else -> UPhiValue.create(this, other)
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ abstract class UValueBase : UValue {
|
||||
|
||||
override fun merge(other: UValue): UValue = when (other) {
|
||||
this -> this
|
||||
is UVariableValue -> other.merge(this)
|
||||
is UDependentValue -> other.merge(this)
|
||||
is UCallResultValue -> other.merge(this)
|
||||
else -> UPhiValue.create(this, other)
|
||||
}
|
||||
|
||||
@@ -36,13 +36,13 @@ class UVariableValue private constructor(
|
||||
override fun merge(other: UValue) = when (other) {
|
||||
this -> this
|
||||
value -> this
|
||||
is UVariableValue -> {
|
||||
if (variable != other.variable || value != other.value) UPhiValue.create(this, other)
|
||||
else create(variable, value, dependencies + other.dependencies)
|
||||
}
|
||||
is UDependentValue -> {
|
||||
if (value != other.value) UPhiValue.create(this, other)
|
||||
else create(variable, value, dependencies + other.dependencies)
|
||||
val allDependencies = dependencies + other.dependencies
|
||||
when {
|
||||
other !is UVariableValue || variable != other.variable -> UPhiValue.create(this, other)
|
||||
value != other.value -> create(variable, value.merge(other.value), allDependencies)
|
||||
else -> create(variable, value, allDependencies)
|
||||
}
|
||||
}
|
||||
else -> UPhiValue.create(this, other)
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@ UFile (package = ) [public class LoopWithReassignment {...]
|
||||
ULiteralExpression (value = "") [""] = ""
|
||||
UWhileExpression [while (bar(name) !== null) {...}] = Undetermined
|
||||
UBinaryExpression (operator = !==) [bar(name) !== null] = Undetermined
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [bar(name)] = external bar(name)(Undetermined)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [bar(name)] = external bar(name)((var name = Undetermined))
|
||||
UIdentifier (Identifier (bar)) [UIdentifier (Identifier (bar))]
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = (var name = Undetermined)
|
||||
ULiteralExpression (value = null) [null] = null
|
||||
UBlockExpression [{...}] = external bar(name)(Undetermined)
|
||||
UBlockExpression [{...}] = external bar(name)((var name = Undetermined))
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [baz(Color(128, 64, 0))] = external baz(Color(128, 64, 0))(external Color(128, 64, 0)(128, 64, 0))
|
||||
UIdentifier (Identifier (baz)) [UIdentifier (Identifier (baz))]
|
||||
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 3)) [Color(128, 64, 0)] = external Color(128, 64, 0)(128, 64, 0)
|
||||
@@ -19,13 +19,13 @@ UFile (package = ) [public class LoopWithReassignment {...]
|
||||
ULiteralExpression (value = 128) [128] = 128
|
||||
ULiteralExpression (value = 64) [64] = 64
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UBinaryExpression (operator = =) [name = bar(name)] = external bar(name)(Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = Undetermined
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [bar(name)] = external bar(name)(Undetermined)
|
||||
UBinaryExpression (operator = =) [name = bar(name)] = external bar(name)((var name = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = (var name = Undetermined)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [bar(name)] = external bar(name)((var name = Undetermined))
|
||||
UIdentifier (Identifier (bar)) [UIdentifier (Identifier (bar))]
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = (var name = Undetermined)
|
||||
UReturnExpression [return name] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = name) [name] = (var name = Undetermined)
|
||||
UMethod (name = bar) [private static fun bar(name: java.lang.String) : java.lang.String {...}]
|
||||
UParameter (name = name) [var name: java.lang.String]
|
||||
UBlockExpression [{...}] = Nothing
|
||||
|
||||
@@ -22,4 +22,4 @@ UFile (package = ) [public class AliveThenElse {...]
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = (var z = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = x) [x] = (var x = 0)
|
||||
UReturnExpression [return z] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = Phi((var z = (var y = 1)), (var z = (var x = 0)))
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = (var z = Phi((var y = 1), (var x = 0)))
|
||||
|
||||
@@ -42,4 +42,4 @@ UFile (package = ) [public class CascadeIf {...]
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = (var z = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = w) [w] = (var w = 3)
|
||||
UReturnExpression [return z] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = Phi((var z = (var y = 1)), (var z = (var x = 0)), (var z = (var v = 2)), (var z = (var w = 3)))
|
||||
USimpleNameReferenceExpression (identifier = z) [z] = (var z = Phi((var y = 1), (var x = 0), (var v = 2), (var w = 3)))
|
||||
|
||||
@@ -33,13 +33,13 @@ UFile (package = ) [public final enum DeadSwitchEntriesWithoutBreaks {...]
|
||||
USimpleNameReferenceExpression (identifier = THIRD) [THIRD] = THIRD (enum entry)
|
||||
UExpressionList (switch_entry) [{...] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = 13] = 13
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 7), (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
ULiteralExpression (value = 13) [13] = 13
|
||||
USwitchClauseExpressionWithBody [else -> {...] = Undetermined
|
||||
UDefaultCaseExpression [else] = NON-EVALUATED
|
||||
UExpressionList (switch_entry) [{...] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = 66] = 66
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 13), (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
ULiteralExpression (value = 66) [66] = 66
|
||||
UBreakExpression (label = null) [break] = Nothing(break)
|
||||
UReturnExpression [return result] = Nothing
|
||||
|
||||
@@ -9,24 +9,24 @@ UFile (package = ) [public class DoWhile {...]
|
||||
ULocalVariable (name = number) [var number: int = 42]
|
||||
ULiteralExpression (value = 42) [42] = 42
|
||||
UDoWhileExpression [do {...] = Undetermined
|
||||
UBinaryExpression (operator = >) [number > 0] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Phi((var number = Undetermined), (var number = 0), (var number = 4))
|
||||
UBinaryExpression (operator = >) [number > 0] = Undetermined (depending on: (var number = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = (var number = Undetermined)
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UIfExpression [if (number % 10 === 7) {...}] = Undetermined
|
||||
UBinaryExpression (operator = ===) [number % 10 === 7] = Undetermined
|
||||
UBinaryExpression (operator = %) [number % 10] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Phi((var number = Undetermined), (var number = 0), (var number = 4))
|
||||
UBlockExpression [{...}] = Undetermined (depending on: (var number = Undetermined))
|
||||
UIfExpression [if (number % 10 === 7) {...}] = (var count = Undetermined)
|
||||
UBinaryExpression (operator = ===) [number % 10 === 7] = Undetermined (depending on: (var number = Undetermined))
|
||||
UBinaryExpression (operator = %) [number % 10] = Undetermined (depending on: (var number = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = (var number = Undetermined)
|
||||
ULiteralExpression (value = 10) [10] = 10
|
||||
ULiteralExpression (value = 7) [7] = 7
|
||||
UBlockExpression [{...}] = Phi((var count = Undetermined), (var count = 0), (var count = 1))
|
||||
UPostfixExpression (operator = ++) [count++] = Phi((var count = Undetermined), (var count = 0), (var count = 1))
|
||||
USimpleNameReferenceExpression (identifier = count) [count] = Phi((var count = Undetermined), (var count = 0), (var count = 1))
|
||||
UBlockExpression [{...}] = (var count = Undetermined)
|
||||
UPostfixExpression (operator = ++) [count++] = (var count = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = count) [count] = (var count = Undetermined)
|
||||
UastEmptyExpression [UastEmptyExpression] = NON-EVALUATED
|
||||
UBinaryExpression (operator = =) [number = number / 10] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Phi((var number = Undetermined), (var number = 0), (var number = 4))
|
||||
UBinaryExpression (operator = /) [number / 10] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Phi((var number = Undetermined), (var number = 0), (var number = 4))
|
||||
UBinaryExpression (operator = =) [number = number / 10] = Undetermined (depending on: (var number = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = (var number = Undetermined)
|
||||
UBinaryExpression (operator = /) [number / 10] = Undetermined (depending on: (var number = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = (var number = Undetermined)
|
||||
ULiteralExpression (value = 10) [10] = 10
|
||||
UReturnExpression [return count] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = count) [count] = Phi((var count = Undetermined), (var count = 0), (var count = 1))
|
||||
USimpleNameReferenceExpression (identifier = count) [count] = (var count = Undetermined)
|
||||
|
||||
@@ -20,4 +20,4 @@ UFile (package = ) [public final enum EnumChoice {...]
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = SECOND) [SECOND] = SECOND (enum entry)
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = FIRST (enum entry)), (var result = SECOND (enum entry)))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Phi(FIRST (enum entry), SECOND (enum entry)))
|
||||
|
||||
@@ -43,4 +43,4 @@ UFile (package = ) [public final enum EnumSwitch {...]
|
||||
ULiteralExpression (value = 66) [66] = 66
|
||||
UBreakExpression (label = null) [break] = Nothing(break)
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 66), (var result = 13), (var result = 3), (var result = 7))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Phi(3, 7, 13, 66))
|
||||
|
||||
@@ -41,8 +41,8 @@ UFile (package = ) [public final enum EnumSwitchConditionalBreak {...]
|
||||
UBinaryExpression (operator = =) [newResult = 42] = 42
|
||||
USimpleNameReferenceExpression (identifier = newResult) [newResult] = (var newResult = Undetermined)
|
||||
ULiteralExpression (value = 42) [42] = 42
|
||||
UPostfixExpression (operator = ++) [counter++] = Phi((var counter = 1), (var counter = 0))
|
||||
USimpleNameReferenceExpression (identifier = counter) [counter] = Phi((var counter = 1), (var counter = 0))
|
||||
UPostfixExpression (operator = ++) [counter++] = (var counter = Phi(1, 0))
|
||||
USimpleNameReferenceExpression (identifier = counter) [counter] = (var counter = Phi(1, 0))
|
||||
UBreakExpression (label = null) [break] = Nothing(break)
|
||||
UReturnExpression [return newResult + counter] = Nothing
|
||||
UBinaryExpression (operator = +) [newResult + counter] = Undetermined (depending on: (var newResult = 42), (var counter = Undetermined))
|
||||
|
||||
@@ -31,14 +31,14 @@ UFile (package = ) [public final enum EnumSwitchWithoutBreaks {...]
|
||||
USimpleNameReferenceExpression (identifier = THIRD) [THIRD] = THIRD (enum entry)
|
||||
UExpressionList (switch_entry) [{...] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = 13] = 13
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 7), (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
ULiteralExpression (value = 13) [13] = 13
|
||||
USwitchClauseExpressionWithBody [else -> {...] = Undetermined
|
||||
UDefaultCaseExpression [else] = NON-EVALUATED
|
||||
UExpressionList (switch_entry) [{...] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = 66] = 66
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 13), (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
ULiteralExpression (value = 66) [66] = 66
|
||||
UBreakExpression (label = null) [break] = Nothing(break)
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = 3), (var result = 66))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Phi(3, 66))
|
||||
|
||||
@@ -9,16 +9,16 @@ UFile (package = ) [public class For {...]
|
||||
UDeclarationsExpression [var i: int = 0] = Undetermined
|
||||
ULocalVariable (name = i) [var i: int = 0]
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UBinaryExpression (operator = <) [i < 10] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UBinaryExpression (operator = <) [i < 10] = Undetermined (depending on: (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
ULiteralExpression (value = 10) [10] = 10
|
||||
UPostfixExpression (operator = ++) [i++] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = result + i] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
UBinaryExpression (operator = +) [result + i] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UPostfixExpression (operator = ++) [i++] = (var i = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UBlockExpression [{...}] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
UBinaryExpression (operator = =) [result = result + i] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
UBinaryExpression (operator = +) [result + i] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
|
||||
@@ -8,11 +8,11 @@ UFile (package = ) [public class For {...]
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UForEachExpression [for (number : numbers) {...}] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = numbers) [numbers] = Undetermined
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = result + number] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
UBinaryExpression (operator = +) [result + number] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
UBlockExpression [{...}] = Undetermined (depending on: (var result = Undetermined))
|
||||
UBinaryExpression (operator = =) [result = result + number] = Undetermined (depending on: (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
UBinaryExpression (operator = +) [result + number] = Undetermined (depending on: (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Undetermined
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
|
||||
@@ -16,17 +16,17 @@ UFile (package = ) [import java.util...]
|
||||
ULocalVariable (name = i) [var i: int = a++]
|
||||
UPostfixExpression (operator = ++) [a++] = (var a = 0)
|
||||
USimpleNameReferenceExpression (identifier = a) [a] = (var a = 0)
|
||||
UBinaryExpression (operator = <) [i < size] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0)))
|
||||
UBinaryExpression (operator = <) [i < size] = Undetermined (depending on: (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = size) [size] = Undetermined
|
||||
UPostfixExpression (operator = ++) [i++] = Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0)))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0)))
|
||||
UBlockExpression [{...}] = external add(i)(Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0))))
|
||||
UQualifiedReferenceExpression [result.add(i)] = external add(i)(Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0))))
|
||||
UPostfixExpression (operator = ++) [i++] = (var i = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UBlockExpression [{...}] = external add(i)((var i = Undetermined))
|
||||
UQualifiedReferenceExpression [result.add(i)] = external add(i)((var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = external LinkedList()())
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [add(i)] = external add(i)(Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0))))
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [add(i)] = external add(i)((var i = Undetermined))
|
||||
UIdentifier (Identifier (add)) [UIdentifier (Identifier (add))]
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = (var a = 0)))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UQualifiedReferenceExpression [result.add(a)] = external add(a)((var a = 1))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = external LinkedList()())
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [add(a)] = external add(a)((var a = 1))
|
||||
@@ -48,13 +48,13 @@ UFile (package = ) [import java.util...]
|
||||
UIdentifier (Identifier (getList)) [UIdentifier (Identifier (getList))]
|
||||
UPrefixExpression (operator = ++) [++size] = 4 (depending on: (var size = 3))
|
||||
USimpleNameReferenceExpression (identifier = size) [size] = (var size = 3)
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = result + number] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
UBinaryExpression (operator = +) [result + number] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
UBlockExpression [{...}] = Undetermined (depending on: (var result = Undetermined))
|
||||
UBinaryExpression (operator = =) [result = result + number] = Undetermined (depending on: (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
UBinaryExpression (operator = +) [result + number] = Undetermined (depending on: (var result = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = number) [number] = Undetermined
|
||||
UReturnExpression [return result + size] = Nothing
|
||||
UBinaryExpression (operator = +) [result + size] = Undetermined (depending on: (var size = 4))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0))
|
||||
UBinaryExpression (operator = +) [result + size] = Undetermined (depending on: (var result = Undetermined), (var size = 4))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = size) [size] = (var size = 4)
|
||||
|
||||
@@ -18,10 +18,10 @@ UFile (package = ) [public class TryCatch {...]
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UTryExpression [try {...] = Undetermined
|
||||
UBlockExpression [{...}] = 1
|
||||
UBinaryExpression (operator = =) [sum = sum + Integer.parseInt(part)] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = Phi((var sum = 0), (var sum = Undetermined))
|
||||
UBinaryExpression (operator = +) [sum + Integer.parseInt(part)] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = Phi((var sum = 0), (var sum = Undetermined))
|
||||
UBinaryExpression (operator = =) [sum = sum + Integer.parseInt(part)] = Undetermined (depending on: (var sum = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = (var sum = Undetermined)
|
||||
UBinaryExpression (operator = +) [sum + Integer.parseInt(part)] = Undetermined (depending on: (var sum = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = (var sum = Undetermined)
|
||||
UQualifiedReferenceExpression [Integer.parseInt(part)] = external parseInt(part)(Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = Integer) [Integer] = external Integer()
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [parseInt(part)] = external parseInt(part)(Undetermined)
|
||||
@@ -37,6 +37,6 @@ UFile (package = ) [public class TryCatch {...]
|
||||
ULiteralExpression (value = 1) [1] = 1
|
||||
UDeclarationsExpression [var c: int = b] = Undetermined
|
||||
ULocalVariable (name = c) [var c: int = b]
|
||||
USimpleNameReferenceExpression (identifier = b) [b] = Phi((var b = 1), (var b = 0))
|
||||
USimpleNameReferenceExpression (identifier = b) [b] = (var b = Phi(1, 0))
|
||||
UReturnExpression [return sum] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = Phi((var sum = Undetermined), (var sum = 0))
|
||||
USimpleNameReferenceExpression (identifier = sum) [sum] = (var sum = Undetermined)
|
||||
|
||||
@@ -8,15 +8,15 @@ UFile (package = ) [public class While {...]
|
||||
ULocalVariable (name = i) [var i: int = 0]
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UWhileExpression [while (i < 10) {...}] = Undetermined
|
||||
UBinaryExpression (operator = <) [i < 10] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UBinaryExpression (operator = <) [i < 10] = Undetermined (depending on: (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
ULiteralExpression (value = 10) [10] = 10
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UBinaryExpression (operator = =) [result = result + i++] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
UBinaryExpression (operator = +) [result + i++] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
UPostfixExpression (operator = ++) [i++] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UBlockExpression [{...}] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
UBinaryExpression (operator = =) [result = result + i++] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
UBinaryExpression (operator = +) [result + i++] = Undetermined (depending on: (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0))), (var i = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
UPostfixExpression (operator = ++) [i++] = (var i = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UReturnExpression [return result] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = Phi((var result = Undetermined), (var result = 0 (depending on: (var i = 0))), (var result = 0))
|
||||
USimpleNameReferenceExpression (identifier = result) [result] = (var result = Undetermined (depending on: (var i = Undetermined), (var i = Phi(1, 0)), (var i = 0)))
|
||||
|
||||
@@ -17,7 +17,7 @@ UFile (package = ) [public class WhileWithContinue {...]
|
||||
UIdentifier (Identifier (bar)) [UIdentifier (Identifier (bar))]
|
||||
UBlockExpression [{...}] = Nothing(continue)
|
||||
UBinaryExpression (operator = =) [second = 3] = 3
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = Phi((var second = 3), (var second = 2))
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = (var second = Phi(3, 2))
|
||||
ULiteralExpression (value = 3) [3] = 3
|
||||
UIfExpression [if (first > 0) continue] = Nothing(continue)
|
||||
UBinaryExpression (operator = >) [first > 0] = true (depending on: (var first = 1))
|
||||
@@ -29,7 +29,7 @@ UFile (package = ) [public class WhileWithContinue {...]
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = Undetermined
|
||||
ULiteralExpression (value = 4) [4] = 4
|
||||
UReturnExpression [return second] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = Phi((var second = 3), (var second = 2))
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = (var second = Phi(3, 2))
|
||||
UMethod (name = baz) [public static fun baz() : int {...}]
|
||||
UBlockExpression [{...}] = Nothing
|
||||
UDeclarationsExpression [var first: int = 2] = Undetermined
|
||||
@@ -43,10 +43,10 @@ UFile (package = ) [public class WhileWithContinue {...]
|
||||
UIdentifier (Identifier (bar)) [UIdentifier (Identifier (bar))]
|
||||
UBlockExpression [{...}] = 4
|
||||
UBinaryExpression (operator = =) [second = 3] = 3
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = Phi((var second = 4), (var second = 3), (var second = 2))
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = (var second = Phi(4, 3, 2))
|
||||
ULiteralExpression (value = 3) [3] = 3
|
||||
UPostfixExpression (operator = --) [first--] = Phi((var first = Undetermined), (var first = 1), (var first = 2))
|
||||
USimpleNameReferenceExpression (identifier = first) [first] = Phi((var first = Undetermined), (var first = 1), (var first = 2))
|
||||
UPostfixExpression (operator = --) [first--] = (var first = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = first) [first] = (var first = Undetermined)
|
||||
UIfExpression [if (first > 0) continue] = Undetermined
|
||||
UBinaryExpression (operator = >) [first > 0] = Undetermined (depending on: (var first = Undetermined))
|
||||
USimpleNameReferenceExpression (identifier = first) [first] = (var first = Undetermined)
|
||||
@@ -57,4 +57,4 @@ UFile (package = ) [public class WhileWithContinue {...]
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = (var second = 3)
|
||||
ULiteralExpression (value = 4) [4] = 4
|
||||
UReturnExpression [return second] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = Phi((var second = 4), (var second = 3), (var second = 2))
|
||||
USimpleNameReferenceExpression (identifier = second) [second] = (var second = Phi(4, 3, 2))
|
||||
|
||||
@@ -8,8 +8,8 @@ UFile (package = ) [public class WhileWithIncrement {...]
|
||||
UWhileExpression [while (true) {...}] = Undetermined
|
||||
ULiteralExpression (value = true) [true] = true
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UPostfixExpression (operator = ++) [i++] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
UPostfixExpression (operator = ++) [i++] = (var i = Undetermined)
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
UIfExpression [if (i % 42 === 0) break] = Undetermined
|
||||
UBinaryExpression (operator = ===) [i % 42 === 0] = Undetermined (depending on: (var i = Undetermined))
|
||||
UBinaryExpression (operator = %) [i % 42] = Undetermined (depending on: (var i = Undetermined))
|
||||
@@ -19,4 +19,4 @@ UFile (package = ) [public class WhileWithIncrement {...]
|
||||
UBreakExpression (label = null) [break] = Nothing(break)
|
||||
UastEmptyExpression [UastEmptyExpression] = NON-EVALUATED
|
||||
UReturnExpression [return i] = Nothing
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Phi((var i = Undetermined), (var i = 1), (var i = 0))
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = (var i = Undetermined)
|
||||
|
||||
Reference in New Issue
Block a user