...
Use Case 4: Find overloaded methods with multiple parameters that share a single type.
Covariant Arrays
Wiki Markup |
---|
In Java and C#, array subtyping is covariant, meaning that type B\[\] is considered a subtype of A\[\] whenever B is a subtype of A. However, this relation can cause runtime exceptions. Consider the following Java code where Banana and Apple are subtypes of Fruit: |
Code Block |
---|
Banana[] bananas = new Banana[5]; Fruit[] fruit = bananas; fruits[0] = new Apple(); // ArrayStore Exception peelBanana(bananas[0]); // Apple???? |
Wiki Markup |
---|
The assignment to the first element of the variable fruit on line 3 will cause an ArrayStore exception. Although statically, the variable fruit has type Fruit\[\], its runtime type is Banana\[\] and thus we cannot use it to store an Apple. |
Use Case 5: Find occurences of covariant array uses in assignment, method calls, constructor instantiations and return statements.
...
- doesn't detect local inner classes (local & anonymous). Only inner classes (doesn't differentiate): class in all classes
- no access to local variable declared in methods
- no support for generics on declaration.
- no support for constructors (considered as method init)
- no AST structural matching. (e.g loops ...)
- no variable binding/unification
- set operators (union, intersection)
- support for read/write of fields references
Wiki Markup |
---|
*{+}SOUL \[authors replying on Tuesday\]+* |
Jquery
- http://jquery.cs.ubc.ca/documentation/toc.html
- http://jquery.cs.ubc.ca/documentation/appendix2.html
- variable binding through predicates
Wiki Markup support for read & mutation of fields (write) \[writes(?B,?F,?L) means: "Block ?B writes to field ?F at location ?L"\]
- no structural matching (e.g pattern match on a loop or body of a method)
- no generics support
Wiki Markup |
---|
*+.QL \[emailed Oege\]+* |
Wiki Markup |
---|
*{+}Jackpot \[emailed Jan\]+* |
...
Overview
Content Tools
ThemeBuilder