Vijay Menon
cad0430c0d
Tweaks to warning level and reporting
...
R=leafp@google.com
Review URL: https://codereview.chromium.org/1059873002
2015-04-03 15:46:58 -07:00
Leaf Petersen
7321b609d5
Inference casts to dynamic, fuzzy types handled
...
During inference, allow sub-expressions of type dynamic to be cast to the inferred type.
This CL also adds special case support for the case where we are trying to infer a type for a closure literal with a fuzzy type - often these closures are already well-typed (or easily inferable) if we eliminate the fuzziness.
This gets rid of two of the static errors on angular hello world, along with most of the InferableClosure warnings (turning them into InferredTypeClosure infos).
Most of the remaining InferableClosure cases are function literals with block function bodies, which I don't handle in general yet.
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1059763003
2015-04-03 15:36:27 -07:00
Vijay Menon
78cb0608b3
Disable closure wrapping by default
...
R=leafp@google.com
Review URL: https://codereview.chromium.org/1052383003
2015-04-03 14:26:11 -07:00
Leaf Petersen
0399992b81
Downwards closure inference. This implements a basic form of downwards closure inference. It only handles expression functions (=> e), and it does not try to narrow the type of parameters.
...
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1050703002
2015-04-03 09:17:30 -07:00
Vijay Menon
2e895d355e
Update mock sdk to fix test
...
R=sigmund@google.com
Review URL: https://codereview.chromium.org/1051523002
2015-03-31 13:26:12 -07:00
Leaf Petersen
da58b9d8aa
Downward inference
...
This is a first cut at downwards inference. The interaction with InferableLiteral etc isn't well sorted out yet, so while downwards inference on nested expressions works, there will currently be spurious warnings.
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1038213003
2015-03-31 13:24:25 -07:00
Vijay Menon
75ee9c6cc5
Handle for-in loops
...
R=sigmund@google.com
Review URL: https://codereview.chromium.org/1048863003
2015-03-30 17:22:46 -07:00
Vijay Menon
67e4bc583a
Rationalize coercions
...
This breaks out casts / coercions into:
Standard (on by default)
- DynamicCasts: dynamic -> T
- AssignmentCasts: T x = expr; // T must be a ground type
Inference (this will go away)
- InferableLiteral
- InferableClosure
- InferableAllocation
Implicit (no flag yet, but i'll add to disable by default)
- DownCastComposite: Any cast to a non-ground type
- DownCastImplicit: Any other implicit downcast not covered above
A flag is also added to enable/disable all wrapping. This is not off by default yet, but that is the intent.
R=leafp@google.com
Review URL: https://codereview.chromium.org/1038583004
2015-03-25 14:51:54 -07:00
Sigmund Cherem
2bf7e0aed8
Transitive inference using SCC
...
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1028793002
2015-03-23 13:11:33 -07:00
Vijay Menon
1430655b9e
Treat Object and dynamic similarly
...
Note, this makes: T<dynamic> <: T<Object> and T<Object> <: T<dynamic>.
R=leafp@google.com
Review URL: https://codereview.chromium.org/1024073003
2015-03-20 14:06:13 -07:00
Vijay Menon
c831595c88
Allow arity checks on dynamic function types
...
BUG=
R=jacobr@google.com , leafp@google.com
Review URL: https://codereview.chromium.org/1021273004
2015-03-20 10:40:43 -07:00
Vijay Menon
48d4a4e320
Allow S->T <: dynamic->T
...
In followup CLs, I will:
- Fix coercions to limit implicit ones.
R=jmesserly@google.com , leafp@google.com
Review URL: https://codereview.chromium.org/1010893004
2015-03-18 16:40:43 -07:00
Sigmund Cherem
06e73efda4
Turn on infer-from-overrides by default, rename inferStaticFromOtherStatics to
...
inferTransitively.
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/1015843002
2015-03-17 14:00:48 -07:00
Sigmund Cherem
212e520429
Handle type-inference on fields, consts, and inferable overrides
...
deterministically in library cycles.
R=vsm@google.com
Review URL: https://codereview.chromium.org/1011933002
2015-03-17 13:12:51 -07:00
Kevin Moore
6796ce6884
Adding Travis CI and Coveralls support
...
only use compact config if we're not doing code coverage
R=sigmund@google.com
Review URL: https://codereview.chromium.org/1014573003
2015-03-17 08:19:56 -07:00
Vijay Menon
e50906c0d3
Fix for conditional expressions
...
R=sigmund@google.com
Review URL: https://codereview.chromium.org/997143003
2015-03-16 10:09:25 -07:00
Vijay Menon
448729446b
Disable infer-from-overrides by default
...
See: https://github.com/dart-lang/dev_compiler/issues/86
R=sigmund@google.com
Review URL: https://codereview.chromium.org/980103002
2015-03-05 12:27:39 -08:00
John Messerly
6e824067a3
rename ddc -> dev_compiler, fixes #84
...
R=sigmund@google.com
Review URL: https://codereview.chromium.org/967933005
2015-03-04 11:12:19 -08:00
Sigmund Cherem
7dd29efd8f
Initial cut for a development server
...
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/973433003
2015-03-04 09:40:06 -08:00
Vijay Menon
946676554b
Make int and double nullable by default
...
See patch set 1 for the initial step back and patch set 2 to try to get some of this back.
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/977613002
2015-03-03 12:08:30 -08:00
John Messerly
2a5adfe05a
fix analysis messages
...
seen on the latest dev channel editor w/ analysis server
R=sigmund@google.com
Review URL: https://codereview.chromium.org/962213003
2015-02-27 09:06:13 -08:00
Leaf Petersen
40688929e5
Typecheck map and list literals
...
We were not checking the elements of list and map literals against the declared type of the literal.
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/957013002
2015-02-26 16:45:15 -08:00
Vijay Menon
50753e3a47
Typecheck constructor initializers properly
...
R=leafp@google.com
Review URL: https://codereview.chromium.org/959003003
2015-02-26 16:19:27 -08:00
Sigmund Cherem
e57c960817
rename package:ddc to package:dev_compiler
...
BUG=
R=vsm@google.com
Review URL: https://codereview.chromium.org/954773003
2015-02-24 17:01:15 -08:00
Vijay Menon
5c1c9c2381
Add LICENSE and corresponding headers
...
Fix expectations where line number has changed.
R=dgrove@google.com
Review URL: https://chromereviews.googleplex.com/158257013
2015-02-24 15:02:26 -08:00
John Messerly
6c7cd9b731
Begin to handle some of the *_patch.dart files
...
Moves: test/sdk --> tool/input_sdk_src
Also moves: test/sdk/lib/_internal/js_lib --> tool/input_sdk_patch
we'll eventually need to customize that code
Adds tool/patch_sdk.dart, an offline transformation step that produces: test/generated_sdk
Essentially this merges the "external" declarations and the @patch syntactically. There's a comment in tool/patch_sdk.dart explaining the rationale behind this approach.
There's still *lots* to do in the generated code. This does none of that. The only new code is tool/patch_sdk.dart and the minimum changes to test/codegen_test.dart and js_codegen.dart to get test.sh running and debuggable.
Tracking bug for SDK is https://github.com/dart-lang/dart-dev-compiler/issues/58
R=sigmund@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/157137013
2015-02-20 08:58:01 -08:00
Sigmund Cherem
d78ecd3241
Infer consts and final fields based on RHS
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/142457013
2015-02-19 08:34:01 -08:00
Vijay Menon
eb3c51e6f3
Check default parameters properly
...
R=leafp@google.com
Review URL: https://chromereviews.googleplex.com/155367013
2015-02-18 12:13:30 -08:00
Sigmund Cherem
ae910f2860
Infer return types and field types based on overrides
...
R=jmesserly@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/145247013
2015-02-13 16:53:58 -08:00
Sigmund Cherem
46dfefcae7
Fix check of functions agasint void.
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/156137013
2015-02-13 16:48:37 -08:00
Sigmund Cherem
0ab8340e79
Minor improvement on dart:mocks mocks, and fix related test.
...
R=jmesserly@google.com
Review URL: https://chromereviews.googleplex.com/155267013
2015-02-13 16:18:36 -08:00
Sigmund Cherem
c08003a36e
Add options and move the multi-package options to normal flags
...
R=jmesserly@google.com
Review URL: https://chromereviews.googleplex.com/149487013
2015-02-13 13:04:16 -08:00
Sigmund Cherem
26061d84eb
Get rid of redundant error messages.
...
R=jmesserly@google.com
Review URL: https://chromereviews.googleplex.com/146637013
2015-02-12 13:23:14 -08:00
Vijay Menon
266b6df92d
Error on uninitialized non-nullables
...
R=jmesserly@google.com , leafp@google.com
Review URL: https://chromereviews.googleplex.com/157727013
2015-02-12 09:44:41 -08:00
Vijay Menon
e64630186d
Add non-nullability logic for primitives
...
Still need to:
- Fix our dart:core errors
- Change DownCastLiteral to error
- Handle "int x;", etc.
R=jmesserly@google.com , leafp@google.com
Review URL: https://chromereviews.googleplex.com/156787013
2015-02-11 12:08:34 -08:00
John Messerly
73adf003e6
use cli_utils to get SDK dir
...
also a small cleanup to make it easier to construct TypeResolver (fixes a TODO) and fix a couple of typos
R=leafp@google.com
Review URL: https://chromereviews.googleplex.com/145437014
2015-02-09 11:25:17 -08:00
Sigmund Cherem
2df05920ae
Run formatter, remove dead code detected from analyzer
...
R=jmesserly@google.com
Review URL: https://chromereviews.googleplex.com/145197013
2015-01-27 12:17:12 -08:00
Sigmund Cherem
763e61f4d3
Compile library-by-library. This is a step closer to our incremental compile.
...
As part of this change I made codegen synchronous. Technically is not necessary,
but I think it reduces complexity a lot. For example, keeping it async would
have required more changes to the testing infrastructure. Let me know if you
want to keep that change separate though.
With this change, I'm removing one more use of element.node, which is necessary
to achileve our goal. There is only one more use of this API, for which John has
a CL out.
BUG=
R=jmesserly@google.com
Review URL: https://chromereviews.googleplex.com/145167013
2015-01-27 09:49:26 -08:00
John Messerly
6f58b51389
add test for field order
...
R=sigmund@google.com
Review URL: https://chromereviews.googleplex.com/137317015
2015-01-20 13:24:13 -08:00
Sigmund Cherem
6effcffa67
Check for invalid method overrides between interfaces, base classes, and mixins.
...
Closes #13
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/138367013
2015-01-15 17:43:49 -08:00
John Messerly
c350bb7816
use harmony features in js codegen, including classes
...
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/138327013
2015-01-14 14:35:50 -08:00
Leaf Petersen
fcf7a98525
Call method subtyping
...
Allow objects with an appropriately typed call method to subtype function types. Fixes #19 .
BUG=
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/140757013
2015-01-13 16:10:48 -08:00
Leaf Petersen
b8500e008c
Tests for for loop inference. We haven't implemented inference for foreach loops, and don't seem to be propagating inferred types correctly for regular for loops. This CL adds some tests to document this.
...
BUG=
R=jmesserly@google.com , sigmund@google.com
Review URL: https://chromereviews.googleplex.com/136957014
2015-01-13 11:28:04 -08:00
John Messerly
c8da19d3a2
for loop regression test, closes #20 and #21
...
R=leafp@google.com
Review URL: https://chromereviews.googleplex.com/139837013
2015-01-13 11:18:32 -08:00
John Messerly
7a91b971a4
Check for valid super constructor call placement
...
Generated code can be cleaner if this rule is enforced
R=vsm@google.com
Review URL: https://chromereviews.googleplex.com/137157014
2015-01-12 14:35:46 -08:00
Leaf Petersen
b0a7024e5d
Formatter run
...
Run the formatter on the repository
BUG=
R=jacobr@google.com
Review URL: https://chromereviews.googleplex.com/138207013
2015-01-12 13:16:35 -08:00
Vijay Menon
85f2c2ca5e
Compound operator fixes
...
This permits:
- double += int
- int|double += num
- int|double|num += dynamic
These used to be rejected.
R=jacobr@google.com
Review URL: https://chromereviews.googleplex.com/138217013
2015-01-09 13:34:10 -08:00
Leaf Petersen
37752f763c
Relaxed casts
...
Allow implicit sideways casts between types that are assignable in regular dart.
BUG=
R=jacobr@google.com , vsm@google.com
Review URL: https://chromereviews.googleplex.com/135247013
2015-01-09 10:22:29 -08:00
Vijay Menon
1b936601fb
Differentiate wrapped closure literals and down casts on constructors
...
R=leafp@google.com
Review URL: https://chromereviews.googleplex.com/130427015
2015-01-09 05:55:42 -08:00
Vijay Menon
b2d8299c94
Differentiate and report special down casts
...
- DownCastExact : Cases where the static type of rhs is exact
List<int> l = [1, 2, 3];
- DownCastDynamic : Cases where the static type of the rhs is a subtype (in Dart) of the static type of lhs:
List l = ...;
List<int> l2 = l;
R=jacobr@google.com
Review URL: https://chromereviews.googleplex.com/141647013
2015-01-08 15:57:12 -08:00