-
Robert Griesemer authored
For expressions where the result type is independent of the argument types (comparisons, conversions, rhs of shifts), set the final expression types for those subtrees early. This fixes several bugs where incorrect lhs shift operands where used (say in a comparison), but were not reported. Together with the changes listed below this CL fixes many type-checker bugs. Also: - better documented updateExprType - added larger comment to expr.go explaining the basic expression checking algorithm - use latest definition for indices and make arguments; use the same code to check both - use the same mechanism for cycle detection in constant expressions as for variables (new field Constant.visited) - more tests for complex and make builtins - many more and systematic tests for shifts; moved them into separate testfile - in the testing code, don't compare the expected error pattern against itself (the actual message was always ignored...) - fix affected error patterns in the test files - various cleanups along the way R=adonovan CC=golang-dev https://golang.org/cl/7432051
5183bfda