Commit Graph

2342 Commits

Author SHA1 Message Date
scheglov@google.com 3d5ea37050 'Inline Method' refactoring.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//526583002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39719 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-31 16:43:43 +00:00
paulberry@google.com 3123e48d29 In the analysis server API, change RequestError.code to an enum.
Some of the error codes that were previously defined are no longer
used, so those have been removed.  The enum reflects the set of errors
that are currently in use.

R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//513853002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39689 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-29 07:30:43 +00:00
scheglov@google.com ca869c6d27 Tweaks for refactoring tests.
Mostly the push of 'assertSuccessfulRefactoring' into abstract RefactoringTest.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//516673002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39658 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-28 15:15:17 +00:00
scheglov@google.com 2a7e871aab 'Inline Local' refactoring.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//515733002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39656 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-28 15:10:11 +00:00
paulberry@google.com f556420f97 Rename some bools in the analysis server API.
R=brianwilkerson@google.com, jwren@google.com

Review URL: https://codereview.chromium.org//508203002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39604 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-27 16:39:49 +00:00
scheglov@google.com df2dc27f50 Parameters and validation for the 'Extract Method' refactoring.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//506753002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39538 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-26 05:48:15 +00:00
scheglov@google.com 96a0c295ac Initial 'Extract Method' refactoring implementation.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//498763003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39520 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-25 15:38:00 +00:00
paulberry@google.com 0c0fd777a6 Finish modifying analysis server to make use of code generation.
Generated code is used to produce the response to these requests:
- analysis.updateOptions
- analysis.updateContent
- analysis.setSubscriptions
- analysis.setPriorityFiles
- analysis.setAnalysisRoots
- server.shutdown
- server.setSubscriptions

Generated code is used to produce these requests:
- server.shutdown
- server.getVersion
- server.shutdown
- server.connected

Generated code is used to produce these notifications:
- completion.results
- analysis.overrides
- analysis.outline
- analysis.occurrences

Generated code is used to decode these notifications:
- server.status

In addition, some dead code was removed, the 'protocol.dart' and
'protocol2.dart' files were combined, and the fields Response.result,
Request.params, and Notification.params were made private (to
encourage future use of the generated code).  Also, some overly
verbose import statements were cleaned up by using "hide" rather than
"show".

R=danrubel@google.com

Review URL: https://codereview.chromium.org//506433002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39516 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-25 10:48:16 +00:00
scheglov@google.com e16a9dfe84 Send RenameFeedback.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//501843002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39514 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-25 05:07:43 +00:00
paulberry@google.com e18327f317 Make more use of generated code in analysis server.
The following generated classes are now used:
- CompletionRelevance
- CompletionSuggestion
- CompletionSuggestionKind
- ErrorFixes
- HighlightRegion
- HighlightRegionType
- HoverInformation
- LinkedEditGroup
- LinkedEditSuggestion
- LinkedEditSuggestionKind
- SourceChange

Generated code is used to produce these notifications:
- analysis.errors
- analysis.highlights
- analysis.navigation
- search.results
- server.error
- server.status

Generated code is used to produce the response to these requests:
- analysis.getErrors
- analysis.getHover
- edit.getAssists
- edit.getFixes
- server.getVersion

Generated code is used to handle these notifications in unit testing:
- analysis.highlights
- analysis.navigation

In addition, these methods have been removed, since they are no longer
needed:
- Notification.getParameter
- Result.setEmptyResult
- Result.setResult

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//497393002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39511 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-24 08:39:41 +00:00
paulberry@google.com 665da3d948 Make certain generated constructor parameters optional.
The following constructor parameters are optional as a convenience to
callers.  They default to empty lists:

- SourceFileEdit.edits
- TypeHierarchyItem.interfaces
- TypeHierarchyItem.mixins
- TypeHierarchyItem.subclasses

R=scheglov@google.com

Review URL: https://codereview.chromium.org//499073002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39510 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-23 23:56:24 +00:00
scheglov@google.com 5dda914674 Implement 'edit.getRefactoring' for rename refactoring.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//499723002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39509 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-23 21:14:25 +00:00
paulberry@google.com 10fdb7677a Change analysis server protocol to omit empty lists when optional.
For object fields of type List that are marked as optional, FromJson
code automatically populates the data structure with an empty list
when the field is omitted.  ToJson code automatically omits the field
when its value is an empty list.

R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//482573004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39507 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-23 18:03:34 +00:00
scheglov@google.com 39a38da0e7 Move Location factories and RefactoringProblemSeverity.max into the generated classes.
R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org//462403005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39499 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-22 17:27:19 +00:00
scheglov@google.com 71d70c2de3 Rename 'getRefactoring.return.status' to 'problems'.
It is a list, and we name lists with plurals.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//495273002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39495 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-22 14:47:30 +00:00
scheglov@google.com fd11028816 Make RefactoringStatus a collection of generated RefactoringProblems.
R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org//485083004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39494 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-22 14:45:33 +00:00
scheglov@google.com 436a6b725b Make RefactoringProblem.location optional.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//496113002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39476 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 21:44:08 +00:00
scheglov@google.com 47b813e4ec Rename 'kindId' to 'kind' in 'edit.getRefactoring'.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//473763003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39474 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 20:57:14 +00:00
paulberry@google.com caf0592503 Make more use of generated code in analysis server.
The following generated classes are now used:
- Element
- Location
- Occurrences
- Outline
- OverriddenMember
- Override
- Position
- SearchResult
- SearchResultKind
- SourceFileEdit
- TypeHierarchyItem

Generated code is used to produce the responses to these requests:
- completion.getSuggestions
- search.findElementReferences
- search.findMemberDeclarations
- search.findMemberReferences
- search.findTopLevelDeclarations
- search.getTypeHierarchy

Generated code is used to handle these notifications in unit testing:
- analysis.navigation
- analysis.occurrences
- analysis.outline
- analysis.overrides
- search.results

In addition, we no longer bother to test the JSON conversion code on
AnalysisError, since it is code generated.

R=scheglov@google.com

Review URL: https://codereview.chromium.org//479683005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39470 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 20:04:06 +00:00
scheglov@google.com e666722007 Make EXTRACT_LOCAL and EXTRACT_METHOD refactorings available when there is a selection.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//490923003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39463 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 17:43:22 +00:00
scheglov@google.com b13f544e13 Return only fixes for the errors on the line of the given offset.
R=paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org//494153003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39460 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 17:25:26 +00:00
scheglov@google.com c0b2eee596 Finish 'Extract Local' refactoring.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//489413003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39457 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 16:31:39 +00:00
paulberry@google.com 1fed61127e Introduce convenience methods into generated analysis server classes.
R=scheglov@google.com

Review URL: https://codereview.chromium.org//492243002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39453 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-21 15:49:35 +00:00
scheglov@google.com d67a4a4458 Initial 'Extract Local' implementation.
Missing:

1. suggested names;
2. offsets and lengths of occurrences.
3. some clean ups.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//489973002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39434 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 22:20:19 +00:00
scheglov@google.com c173853f4c Don't use LinkedEditGroup.id.
R=paulberry@google.com, brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//495733002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39430 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 21:07:14 +00:00
paulberry@google.com e4a9df7b12 Don't use "final" in analysis server protocol classes.
Doing so makes it harder to use these classes because we sometimes don't have
complete information about an object at the time we need to create it.

R=jwren@google.com

Review URL: https://codereview.chromium.org//495623002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39420 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 18:53:26 +00:00
danrubel@google.com b10ef0b9dd include inherited members in invocation suggestions
BUG=
R=jwren@google.com

Review URL: https://codereview.chromium.org//489813002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39413 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 16:13:30 +00:00
paulberry@google.com 721b435ba6 Add SearchResultKind.UNKNOWN to the analysis server API.
This resolves an inconsistency between the spec and the analysis
server behavior: the server returns a SearchResultKind of UNKNOWN if
the MatchKind from the analysis engine is one of the following types:

- ANGULAR_REFERENCE
- ANGULAR_CLOSING_TAG_REFERENCE

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//488103003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39411 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 15:32:39 +00:00
paulberry@google.com c5ff06636b Make more use of generated classes in analysis server.
Generated code is now used to process input JSON, and to create
requests and process responses in unit tests.  In addition, the
handwritten classes for ElementKind and SourceEdit have been replaced
with the gennerated versions.

Also some dead code has been removed.

R=scheglov@google.com

Review URL: https://codereview.chromium.org//492563002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39404 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 12:39:31 +00:00
paulberry@google.com 344ff2c03b Make search.findElementReferences.result.element field optional.
This resolves an inconsistency between the spec and the analysis
server behavior: the server doesn't populete the "element" field if no
element could be found.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//484313002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39388 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 21:56:29 +00:00
paulberry@google.com a54eafb037 Allow null as a synonym for {} when decoding JSON objects.
The spec allows this (for interoprability with Lisp-based clients),
and we had been doing it correctly for lists and maps, but not for
arbitrary objects.

R=jwren@google.com

Review URL: https://codereview.chromium.org//483613006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39382 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 21:13:31 +00:00
paulberry@google.com c9b9b98343 Use generated classes to create requests in analysis server unit tests.
R=jwren@google.com

Review URL: https://codereview.chromium.org//477323005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39381 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 20:36:16 +00:00
paulberry@google.com 570b2f115e Change analysis.updateOptions to use generated classes.
Note that there is a small change in behavior: unrecognized options
are now silently ignored; they no longer generate an error.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//492483002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39380 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 19:57:43 +00:00
paulberry@google.com d291be1c9a Do proper JSON conversion when returning search results.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//480823005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39377 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 18:32:56 +00:00
paulberry@google.com 34699f46d5 Start using code-generated protocol classes in analysis server.
This updates the handlers for analysis.getErrors,
server.setSubscriptions, and analysis.setSubscriptions with simpler
versions that make use of the code-generated protocol classes, and
replaces the classes AnalysisError and AnalysisService with their
code-generated versions.

It also removes some dead code.

R=jwren@google.com

Review URL: https://codereview.chromium.org//486003003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39376 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 18:29:41 +00:00
paulberry@google.com 81e274fccb Analysis server code generation improvements
- Make generated code implement the HasToJson interface.

- Add toRequest() convenience methods to classes representing request
  parameters.

- Fix toJson() for objects containing lists (forgot to call toList()).

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//483393002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39375 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 18:26:42 +00:00
danrubel@google.com 8a46d7ed3f more invocation code completion improvements
and pull common suggestion builders into new library

BUG=
R=scheglov@google.com

Review URL: https://codereview.chromium.org//480413003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39370 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 14:08:54 +00:00
danrubel@google.com 46fbd54548 improve keyword suggestions
BUG=
R=scheglov@google.com

Review URL: https://codereview.chromium.org//483803002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39362 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-19 03:27:17 +00:00
paulberry@google.com 64b53a4b5c Code generate Dart classes representing the analysis server API.
These classes support:

- Conversion to JSON
- Conversion from JSON, with error handling via the Request object.
- operator== and hashCode

In addition, convenience functions are generated which extract and
convert the variant contents of a Request, Response, Notification,
EditGetRefactoringResult, or EditGetRefactoringParams once the type is
known.

The generated code is not yet used; it will be used by future CL's.

R=brianwilkerson@google.com, danrubel@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//479043002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39361 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 23:44:05 +00:00
scheglov@google.com 6f88255462 Remove already ported generated code.
Mostly to avoid duplicate import proposals from Quick Fixes.

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org//482143002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39357 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 21:50:49 +00:00
scheglov@google.com b623c4d49f When user renames 'prefix' in 'prefix.Class' she actually wants to rename ImportElement.
Unfortunately we resolve "prefix" to a "PrefixElement".
So, we have to fix this mismatch in the server.

We do the same in indexer, so this CL extract shared namespace-related code into a new unit.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//481173002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39356 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 21:49:11 +00:00
scheglov@google.com e1e1febe72 Merge two constants.dart into one.
R=paulberry@google.com, brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//478933003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39355 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 21:34:54 +00:00
scheglov@google.com d988d1c1cb Test for 'edit.getAssists'.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//480223002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39354 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 21:21:26 +00:00
paulberry@google.com 7226309842 Import analysis_services.dart into analysis_server.dart.
Having two separate packages doesn't really have any benefit, and has
the downside of forcing us to carefully avoid circular dependencies
between the two.  It makes more sense to just combine them.

This is largely a mechanical change consisting of the following renames:

1. pkg/analysis_services/lib/src/* -> pkg/analysis_server/lib/src/services/*
2. pkg/analysis_services/lib/* -> pkg/analysis_server/lib/src/services/*
3. pkg/analysis_services/test/* -> pkg/analysis_server/test/services/*

There were 4 instances where 1 and 2 created a collision:
.../services/correction/assist.dart, .../services/correction/fix.dart,
.../services/refactoring/refactoring.dart, and
.../services/search/search_engine_internal.dart.  To fix the
collision, the files coming from pkg/analysis_services/lib/src were
renamed to "..._internal.dart".

In addition, pkg/analysis_services/test/test_all.dart was modified to
call pkg/analysis_services/test/services/test_all.dart.

R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//484733003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39349 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 20:17:49 +00:00
scheglov@google.com 87f6954692 Support for the 'edit.getAvailableRefactorings' request.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//484713003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39340 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 18:09:05 +00:00
danrubel@google.com 1a6b8db026 refactor and cleanup code completion
- combine all elements of request into request object
- pass request object through to all computers / visitors
- add override annotations on visitor subclasses
- rename completion_computer -> completion_manager
- move DartCompletionComputer into library with other related classes

BUG=
R=scheglov@google.com

Review URL: https://codereview.chromium.org//467233003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39333 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-18 15:43:09 +00:00
paulberry@google.com f822f41189 Update analysis server and integration tests to match new ChangeContentOverlay.
The spec was changed in r39199 so that ChangeContentOverlay contains a
list of edits rather than a single edit.  This updates the analysis
server and integration tests accordingly.

BUG=dartbug.com/20495
R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org//472613002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39218 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 20:04:55 +00:00
scheglov@google.com c25a70a1d9 Fixes for the missing highlights.
These problems were found in https://codereview.chromium.org/463643002/

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org//454843004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39140 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-12 14:24:01 +00:00
scheglov@google.com 61451c87ad Tweak for AnalysisDomainHandler.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org//463563004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39104 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-11 20:22:43 +00:00
paulberry@google.com 80352fd61c Fix analysis server to only send SERVER_STATUS when subscribed to.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//453263002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39065 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-09 16:36:39 +00:00