Commit Graph

180 Commits

Author SHA1 Message Date
Maurizio Cimadamore d4be9a13c8 7192246: Add type-checking support for default methods
Add type-checking support for default methods as per Featherweight-Defender document

Reviewed-by: jjg, dlsmith
2012-11-04 10:59:42 +00:00
Maurizio Cimadamore 319150fde0 7177386: Add attribution support for method references
Add type-checking/lookup routines for method references

Reviewed-by: jjg, dlsmith
2012-10-06 10:35:38 +01:00
Maurizio Cimadamore 5f629e503c 7188968: New instance creation expression using diamond is checked twice
Unify method and constructor check logic

Reviewed-by: jjg
2012-09-26 14:22:41 +01:00
Maurizio Cimadamore f49f25c60d 7177306: Regression: unchecked method call does not erase return type
Spurious extra call to Attr.checkMethod when method call is unchecked

Reviewed-by: jjg, dlsmith
2012-09-25 11:56:46 +01:00
Maurizio Cimadamore d4c5fca16a 7175433: Inference cleanup: add helper class to handle inference variables
Add class to handle inference variables instantiation and associated info

Reviewed-by: jjg, dlsmith
2012-09-25 11:55:34 +01:00
Steve Sides 12a8d12863 7191449: update copyright year to match last edit in jdk8 langtools repository
Reviewed-by: jjh
2012-08-15 13:48:46 -07:00
Maurizio Cimadamore b03ad3ae09 7175911: Simplify error reporting API in Check.CheckContext interface
Make error messages generated during Check.checkType more uniform and more scalable

Reviewed-by: jjg, dlsmith
2012-08-02 18:22:41 +01:00
Maurizio Cimadamore 7e32f8e585 7166552: Inference: cleanup usage of Type.ForAll
Remove hack to callback into type-inference from assignment context

Reviewed-by: dlsmith, jjg
2012-05-31 17:42:14 +01:00
Sue Wei 3d77d813ce 7157798: Add 6 test scenarios for testing inheritance of multiple same-name methods from mulitple interfaces
Reviewed-by: mcimadamore
2012-05-21 16:10:14 -07:00
Maurizio Cimadamore d951098c65 7154127: Inference cleanup: remove bound check analysis from visitors in Types.java
Remove bound checking rules from recursive subtype visitors in Types.java and replace with centralized bound-checking logic

Reviewed-by: jjg, dlsmith
2012-04-11 10:50:11 +01:00
Maurizio Cimadamore 9b1e54dae3 7151492: Encapsulate check logic into Attr.ResultInfo
ResultInfo class should be used to make attribution code transparent w.r.t. check logic being used

Reviewed-by: jjg, dlsmith
2012-03-26 15:28:22 +01:00
Maurizio Cimadamore f6ee974ac7 7151802: compiler update caused sqe test failed
Fix regression caused by 7144506

Reviewed-by: jjg, dlsmith
2012-03-09 17:10:56 +00:00
Maurizio Cimadamore 271ed603e1 7148556: Implementing a generic interface causes a public clone() to become inaccessible
Implementation of Resolve.isOverriddenIn() should distinguish between classes/interfaces

Reviewed-by: jjg
2012-03-06 16:50:32 +00:00
Maurizio Cimadamore 6acf436edc 7151070: NullPointerException in Resolve.isAccessible
Spurious accessibility check in TransTypes

Reviewed-by: jjg
2012-03-06 16:48:29 +00:00
Maurizio Cimadamore d5036d16cd 7144506: Attr.checkMethod should be called after inference variables have been fixed
Unify post-inference sanity check with Attr.checkMethod

Reviewed-by: jjg, dlsmith
2012-03-06 13:28:05 +00:00
Maurizio Cimadamore b10e766b73 7148242: Regression: valid code rejected during generic type well-formedness check
Redundant type-var substitution makes generic-type well-formedness check to fail

Reviewed-by: jjg
2012-03-02 12:57:47 +00:00
Jonathan Gibbons 42b9d6bc2e 7124605: typos in javac comments
Reviewed-by: ksrini
2011-12-23 22:30:33 +00:00
Maurizio Cimadamore 4ac518143c 7115050: Add parser support for lambda expressions
Add support for parsing lambda expressions to JavacParser

Reviewed-by: jjg
2011-11-28 15:56:42 +00:00
Maurizio Cimadamore bd420dc94e 7086586: Inference producing null type argument
Inference should fail in 15.12.2.7 when inference variables with 'nulltype' upper bounds are found

Reviewed-by: dlsmith
2011-09-16 14:16:11 +01:00
Maurizio Cimadamore 08619c2e9c 7086601: Error message bug: cause for method mismatch is 'null'
Inference error during lub() does not set 'cause' for method resolution diagnostic

Reviewed-by: jjg
2011-09-13 14:15:39 +01:00
Maurizio Cimadamore 8db2f8de59 7086595: Error message bug: name of initializer is 'null'
Implementation of MethodSymbol.location() should take into account static/instance initializers

Reviewed-by: jjg
2011-09-13 14:14:57 +01:00
Maurizio Cimadamore 5c209a7d2d 7057297: Project Coin: diamond erroneously accepts in array initializer expressions
Diamond in array initializer expressions should be rejected

Reviewed-by: jjg
2011-07-27 19:01:33 +01:00
Maurizio Cimadamore 02802c9449 7046778: Project Coin: problem with diamond and member inner classes
Diamond inference generates spurious error messages when target type is a member inner class

Reviewed-by: jjg
2011-07-27 19:01:08 +01:00
Maurizio Cimadamore af30a2dbf3 7062745: Regression: difference in overload resolution when two methods are maximally specific
Fix most specific when two methods are maximally specific and only one has non-raw return type

Reviewed-by: jjg, dlsmith
2011-07-27 19:00:53 +01:00
Maurizio Cimadamore fbecf91f80 7040883: Compilation error: "length in Array is defined in an inaccessible class or interface"
Fix of 7034511 (now backed out) is causing spurious accessibility errors

Reviewed-by: jjg
2011-05-02 12:05:41 +01:00
Maurizio Cimadamore fcbd7a77c4 7039931: Project Coin: diamond inference fail with generic constructor explicit type-arguments
Diamond should be disallowed in cases where explicit generic constructor parameters are specified

Reviewed-by: jjg
2011-04-30 11:57:46 +01:00
Maurizio Cimadamore 7fb85c5cef 7034495: Javac asserts on usage of wildcards in bounds
Problem with intersection types and wildcards causing javac to crash

Reviewed-by: jjg
2011-04-29 16:05:56 +01:00
Maurizio Cimadamore 02daeca60e 7034019: ClassCastException in javac with conjunction types
Resolve.mostSpecific doesn't handle case of raw override

Reviewed-by: dlsmith
2011-04-12 20:58:06 -07:00
Maurizio Cimadamore c46387423a 7034511: Loophole in typesafety
Type-variable substutution takes upper bound of replaced captured type-variable

Reviewed-by: dlsmith
2011-04-12 20:56:16 -07:00
Maurizio Cimadamore bd9526ecbe 7030150: Type inference for generic instance creation failed for formal type parameter
Problem when explicit generic constructor type-arguments are used in conjunction with diamond

Reviewed-by: jjg
2011-03-29 16:40:51 +01:00
Maurizio Cimadamore 0a0b5a7a8a 7030687: Diamond: compiler accepts erroneous code where diamond is used with non-generic inner class
Diamond accepts non-parameterized member inner classes with parameterized outer because of a bad check

Reviewed-by: jjg
2011-03-29 16:40:07 +01:00
Maurizio Cimadamore 409b9b8d25 7020044: Project Coin: diamond erroneous allowed on some anonymous inner classes
Disallow diamond on anonymous innner class creation expression (as per JSR 334's EDR)

Reviewed-by: jjg
2011-03-07 14:31:50 +00:00
Maurizio Cimadamore f416cac815 7022054: Invalid compiler error on covariant overriding methods with the same erasure
Rules for method clash use notion of subsignature, which is sometimes too strict and incompatible with JDK 6

Reviewed-by: jjg
2011-03-03 17:34:58 +00:00
Maurizio Cimadamore 1683dd4109 7015715: lub gets stuck on type with complex supertype
Lub should not scan supertypes unnecessarily

Reviewed-by: jjg, dlsmith
2011-02-28 11:50:56 +00:00
Maurizio Cimadamore 32216fc797 7015430: Incorrect thrown type determined for unchecked invocations
Thrown types do not get updated after 15.12.2.8, and do not get erased as per 15.12.2.6

Reviewed-by: jjg, dlsmith
2011-02-28 11:48:53 +00:00
Maurizio Cimadamore 7186448cfe 7019631: issues in test headers in b130
Fix to test headers not containing correct bug ID

Reviewed-by: jjg
2011-02-23 14:17:08 +00:00
Maurizio Cimadamore 1ae687fbd2 7020657: Javac rejects a fairly common idiom with raw override and interfaces
Name clash should not be reported if subinterface/implementing class resolves the clash by defining common overrider

Reviewed-by: jjg
2011-02-23 14:16:12 +00:00
Maurizio Cimadamore 7d8c3e9460 7020043: Project Coin: diamond allowed on non-generic type
Diamond oerator should be disallowed on non-generic class types (i.e. String)

Reviewed-by: jjg
2011-02-18 12:28:49 +00:00
Maurizio Cimadamore dfec6e2301 7007615: java_util/generics/phase2/NameClashTest02 fails since jdk7/pit/b123
Override clash algorithm is not implemented correctly

Reviewed-by: jjg
2011-02-07 18:10:13 +00:00
Maurizio Cimadamore f4daf3d7bf 7014715: javac returns different error code for certain failure(s)
Javac silently crashes when emitting certain kinds of resolution diagnostics

Reviewed-by: jjg
2011-02-03 09:38:19 +00:00
Maurizio Cimadamore 536bd08692 6969184: poor error recovery after symbol not found
Generic type-well formedness check should ignore erroneous symbols

Reviewed-by: jjg
2011-02-03 09:37:28 +00:00
Maurizio Cimadamore 15959fbf11 6838943: inference: javac is not handling type-variable substitution properly
Free type-variables are being replaced with type-variables bound to forall type leading to unsoundness

Reviewed-by: jjg, dlsmith
2011-01-28 12:06:21 +00:00
Maurizio Cimadamore 1e776bc78a 6313164: javac generates code that fails byte code verification for the varargs feature
Method applicability check should fail if formal varargs element type is not accessible

Reviewed-by: jjg
2011-01-28 12:03:49 +00:00
Maurizio Cimadamore 6647b73cc8 6910550: javac 1.5.0_17 fails with incorrect error message
Multiple clashing members declared in same class should be added to the class' scope in order to avoid downstream spurious diagnostics

Reviewed-by: jjg
2011-01-28 12:01:07 +00:00
Maurizio Cimadamore b77effad6c 6968793: issues with diagnostics
Several diagnostic improvements

Reviewed-by: jjg
2011-01-24 15:44:51 +00:00
Maurizio Cimadamore df54c56a04 6943278: spurious error message for inference and type-variable with erroneous bound
Type-inference should ignore erroneous bounds

Reviewed-by: jjg
2011-01-24 15:44:15 +00:00
Kelly O'Hair 84b5875f26 6962318: Update copyright year
Reviewed-by: xdono
2010-12-28 15:54:52 -08:00
Maurizio Cimadamore 929d3fd3f5 6476118: compiler bug causes runtime ClassCastException for generics overloading
Compiler allows bridge methods to override unrelated method

Reviewed-by: jjg
2010-12-09 15:50:34 +00:00
Maurizio Cimadamore 8644a0bc46 7002837: Diamond: javac generates diamond inference errors when in 'finder' mode
Javac should disable error messages when analyzing instance creation expression in 'diamond finder' mode

Reviewed-by: jjg
2010-12-03 16:32:31 +00:00
Maurizio Cimadamore 7613f7a72c 6956758: NPE in com.sun.tools.javac.code.Symbol - isSubClass
Use of TransTypes.cast() instead of TransTypes.coerce() causes NPE in Lower

Reviewed-by: jjg
2010-12-03 16:31:23 +00:00
Maurizio Cimadamore 3e65664acf 6995200: JDK 7 compiler crashes when type-variable is inferred from expected primitive type
15.12.2.8 should use boxing when expected type in assignment context is a primitive type

Reviewed-by: jjg
2010-11-23 11:08:43 +00:00
Maurizio Cimadamore 3a681162e4 6985719: Alike methods in interfaces (Inheritance and Overriding)
Javac should report error when interface inherits unrelated method with same erasure

Reviewed-by: jjg
2010-11-15 13:50:53 +00:00
Maurizio Cimadamore 83fb083bfa 6996914: Diamond inference: problem when accessing protected constructor
Special resolution scheme for diamond inference needs to open up protected constructors in anon inner class creation

Reviewed-by: jjg
2010-11-10 12:37:25 +00:00
Maurizio Cimadamore 9b7bc21bb0 6939780: add a warning to detect diamond sites
Added hidden compiler flag '-XDfindDiamond' to detect 'diamondifiable' sites

Reviewed-by: jjg
2010-11-02 12:01:35 +00:00
Maurizio Cimadamore ac9f97939f 6996415: Override bridges causes compiler-generated code to end up with synthetic infinite loop
Temporarily disable fix for override bridges (6337171)

Reviewed-by: jjg
2010-11-02 12:00:54 +00:00
Lana Steuck 78db31beb6 Merge 2010-09-25 12:02:32 -07:00
Maurizio Cimadamore cd3371e702 5088624: cannot find symbol message should be more intelligent
Resolve.java should keep track of all candidates found during a method resolution sweep to generate more meaningful diagnostics

Reviewed-by: jjg
2010-09-18 09:56:23 -07:00
Lana Steuck dc37688eb9 Merge 2010-09-16 11:20:36 -07:00
Kelly O'Hair fd65dbfc50 6982137: Rebranding pass 2 - missed copyright changes
Reviewed-by: mbykov
2010-09-09 16:29:40 -07:00
Maurizio Cimadamore 73825fc885 6337171: javac should create bridge methods when type variable bounds restricted
Javac should add synthetic overrides for inherited abstract methods in order to preserve binary compatibility

Reviewed-by: jjg
2010-09-07 17:31:54 +01:00
Maurizio Cimadamore 634d001c64 6977800: Regression: invalid resolution of supertype for local class
Resolution of superclass/superinterfaces in extends/implements clause skips local classes

Reviewed-by: jjg
2010-08-19 11:54:25 +01:00
Maurizio Cimadamore 71962ebfb0 6886247: regression: javac crashes with an assertion error in Attr.java
Capture conversion does not work on nested types

Reviewed-by: jjg
2010-08-19 11:50:50 +01:00
Maurizio Cimadamore 2801325742 6369605: Unconstrained type variables fails to include bounds
Unconstrained type-variables with recursive bounds are not inferred properly

Reviewed-by: jjg
2010-08-16 14:58:10 +01:00
Maurizio Cimadamore 541f7a7a41 6938454: Unable to determine generic type in program that compiles under Java 6
A redundant dubtyping check causes spurious inference failure

Reviewed-by: jjg
2010-07-29 15:56:25 +01:00
Jonathan Gibbons ccd014ed3f 6971882: Remove -XDstdout from javac test
Reviewed-by: darcy
2010-07-26 14:18:45 -07:00
Jonathan Gibbons 29ceaebc37 6968497: localized text appears in raw diagnostic
Reviewed-by: darcy
2010-07-12 16:37:46 -07:00
Jonathan Gibbons 0dd9ef9b43 6944312: Potential rebranding issues in openjdk/langtools repository sources
Reviewed-by: darcy
2010-06-10 16:08:01 -07:00
Lana Steuck 2592bab72c Merge 2010-05-28 12:41:48 -07:00
Kelly O'Hair bd4f4be9d7 6943119: Rebrand source copyright notices
Reviewed-by: darcy
2010-05-25 15:54:51 -07:00
Maurizio Cimadamore 836fb6fe52 6951833: latest diamond implementation generates spurious raw type warnings
Raw warning checks should be disabled in the presence of a diamond AST node

Reviewed-by: jjg
2010-05-19 16:43:30 +01:00
Maurizio Cimadamore cd66a7b462 6946618: sqe test fails: javac/generics/NewOnTypeParm in pit jdk7 b91 in all platforms
Bad cast to ClassType in the new diamond implementation fails if the target type of the instance creation expression is a type-variable

Reviewed-by: jjg
2010-05-19 16:42:37 +01:00
Maurizio Cimadamore 1bc9b6324e 6880344: Recursive type parameters do not compile
Issue in type-variable substitution causes valid code to be rejected

Reviewed-by: jjg
2010-05-19 16:41:57 +01:00
Maurizio Cimadamore d3fa7f79ad 6939620: Switch to 'complex' diamond inference scheme
Implement new inference scheme for diamond operator that takes into account type of actual arguments supplied to constructor

Reviewed-by: jjg, darcy
2010-04-14 12:31:55 +01:00
Maurizio Cimadamore 965595d38b 6939618: Revert 'simple' diamond implementation
Backout changeset for 6840638

Reviewed-by: jjg
2010-04-14 12:23:29 +01:00
Jonathan Gibbons 2ed0d63583 6933914: fix missing newlines
Reviewed-by: ohair
2010-03-10 16:23:18 -08:00
Jonathan Gibbons 953e026858 6931126: jtreg tests not Windows friendly
Reviewed-by: darcy
2010-03-03 19:34:34 -08:00
Jonathan Gibbons 87efbd8787 6931127: strange test class files
Reviewed-by: darcy
2010-03-02 16:43:29 -08:00
Jonathan Gibbons 305d4bc5fc 6919889: assorted position errors in compiler syntax trees
Reviewed-by: darcy
2010-01-29 16:06:51 -08:00
Xiomara Jayasena dbe66b7524 6884624: Update copyright year
Update copyright for files that have been modified in 2009 through Septermber

Reviewed-by: tbell, ohair
2009-09-22 14:06:29 -07:00
Maurizio Cimadamore 1de40db76d 6650759: Inference of formal type parameter (unused in formal parameters) is not performed
Propagate inference constraints from 15.12.2.7 to 15.12.2.8

Reviewed-by: jjg
2009-09-01 14:53:39 +01:00
Jonathan Gibbons af2f2e8d36 6875336: some tests should use /nodynamiccopyright/
Reviewed-by: darcy
2009-08-27 11:08:27 -07:00
Maurizio Cimadamore e5ce4a752b 6840638: Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond')
Diamond operator implementation (simple approach)

Reviewed-by: jjg
2009-08-27 13:40:48 +01:00
Maurizio Cimadamore d8292cad05 6569404: Cannot instantiate an inner class of a type variable
Javac is too strict in rejecting member selction from a type-var

Reviewed-by: jjg
2009-08-11 01:14:06 +01:00
Maurizio Cimadamore b097f12a5d 6869075: regression: javac crashes when compiling compound string assignment with generics
Javac should not add syntehtic cast to the LHS of an assignment expression

Reviewed-by: jjg
2009-08-11 01:13:42 +01:00
Maurizio Cimadamore dd76763423 6846972: cannot access member of raw type when erasure change overriding into overloading
Fix of 6400189 caused a nasty problem in method resolution

Reviewed-by: jjg
2009-07-15 10:25:01 +01:00
Maurizio Cimadamore 3b51e6ae0d 6638712: Inference with wildcard types causes selection of inapplicable method
Added global sanity check in order to make sure that return type inference does not violate bounds constraints

Reviewed-by: jjg
2009-06-16 10:46:37 +01:00
Maurizio Cimadamore fda3d758e3 6835428: regression: return-type inference rejects valid code
Redundant subtyping test during type-inference ends up in rejecting legal code

Reviewed-by: jjg
2009-06-16 10:46:16 +01:00
Jonathan Gibbons 6fb18b568c 6802102: unignore @ignored tests where possible
Reviewed-by: mcimadamore
2009-05-28 09:49:56 -07:00
Joe Darcy 05ea258bbb 6843761: Update langtools tests to remove unncessary -source and -target options
Reviewed-by: jjg
2009-05-27 22:34:43 -07:00
Maurizio Cimadamore 8321605121 6182950: methods clash algorithm should not depend on return type
Fixed code that checks for duplicate method declarations

Reviewed-by: jjg
2009-03-25 10:28:36 +00:00
Tim Bell e005d5df51 Merge 2009-03-09 23:53:41 -07:00
Xiomara Jayasena 56fcf6c052 6814575: Update copyright year
Update copyright for files that have been modified in 2009, up to 03/09

Reviewed-by: katleman, tbell, ohair
2009-03-09 13:29:06 -07:00
Maurizio Cimadamore 5ff31e060f 6804733: javac generates spourious diagnostics for ill-formed type-variable bounds
Fixed algorithm for checking cycles in typevar declarations

Reviewed-by: jjg
2009-03-05 17:24:40 +00:00
Maurizio Cimadamore 198f2427b4 6769027: Source line should be displayed immediately after the first diagnostic line
Added support for customizing diagnostic output via API/command line flags

Reviewed-by: jjg
2009-02-13 11:57:33 +00:00
Maurizio Cimadamore 4021098c46 6729401: Compiler error when using F-bounded generics with free type variables
Javac applies wrong substitution to recursive type-variable bounds

Reviewed-by: jjg
2009-01-29 12:19:14 +00:00
Maurizio Cimadamore 552a7a0e19 6315770: javac inference allows creation of strange types: Integer & Runnable
Javac does not apply glb correctly as per JLS3 15.12.2.8

Reviewed-by: jjg
2009-01-29 12:17:57 +00:00
Tim Bell 1b49bea0ad 6797871: Fix for 6797463 did not remove the jtreg tests, and it should have
Reviewed-by: jjg
2009-01-26 15:14:46 -08:00
Maurizio Cimadamore 19b769a375 6557199: Fails to reject bad override of generic method
Javac does not correctly implement JLS3 8.4.5

Reviewed-by: jjg
2009-01-20 17:49:49 +00:00
Mark Mahieu 9dff8d691f 6723444: javac fails to substitute type variables into a constructor's throws clause
Added constructor's actual type info to NewClass AST node

Reviewed-by: jjg
2009-01-13 13:28:42 +00:00
Maurizio Cimadamore f6cd370370 6665356: Cast not allowed when both qualifying type and inner class are parameterized
Fixed parser and cats conversion in order to allow cast between generic inner classes

Reviewed-by: jjg
2009-01-13 13:28:20 +00:00