Commit Graph

8489 Commits

Author SHA1 Message Date
Konstantin Shcheglov d44d7d4573 Extract AssignmentExpressionResolver.
Change-Id: I9a019ba499a12431955bf9ee45bfe0ae375a52f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131488
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-14 18:08:15 +00:00
Sam Rawlins fe666ce592 Report unused public static members of private classes
Also of private mixins, enums, and extensions.

Fixes #39988

Change-Id: I646205cba64da1a9837585a5af2c4c2b8d41824c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/129860
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-14 06:09:04 +00:00
Konstantin Shcheglov c0b1a0a599 Switch analyzer perf to using analyzer Packages.
Change-Id: Ib6fe433e9fcf956058913589f434954cc18fdd41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131444
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-14 01:41:34 +00:00
Konstantin Shcheglov 16f07ea19e Revert "Use nullable context type for operand of null-check operator."
This reverts commit 856a270823.

Reason for revert: breaks ddc-nnbd-linux-release-chrome

Original change's description:
> Use nullable context type for operand of null-check operator.
> 
> R=​brianwilkerson@google.com
> 
> Change-Id: I463dafe91392047a6902dffa5ab937174e4d87c9
> Bug: https://github.com/dart-lang/sdk/issues/39694
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131343
> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>

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

Change-Id: I0e3a16b8c06ba539fbc415029db15e889849baba
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/39694
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131461
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 21:22:38 +00:00
Konstantin Shcheglov ca31f1d8c6 Refactor FunctionExpressionInvocationResolver to support Never.
Bug: https://github.com/dart-lang/sdk/issues/40055
Change-Id: Ic53b23178441a32d9de6fe0d2b6d5f4c646de75b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131401
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 19:19:07 +00:00
Konstantin Shcheglov 2dd37b65a8 Add findPackagesFrom().
Change-Id: I33c4cc50fd01069790c1c759668d378b77e40e41
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131346
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 17:31:51 +00:00
Konstantin Shcheglov abe7c1a2c4 When NNBD, use nullable iterable type for null-aware spreads.
Bug: https://github.com/dart-lang/sdk/issues/39694
Change-Id: I15c77e63c1e80c65b06e74dca248b93e9214db63
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131345
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 17:29:21 +00:00
Konstantin Shcheglov 6f1bcee053 Extract ifNull resolution in BinaryExpressionResolver.
Change-Id: I686b031f2b614a0b14790379dbe6229ee4d135c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131344
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 17:23:47 +00:00
Konstantin Shcheglov 856a270823 Use nullable context type for operand of null-check operator.
R=brianwilkerson@google.com

Change-Id: I463dafe91392047a6902dffa5ab937174e4d87c9
Bug: https://github.com/dart-lang/sdk/issues/39694
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131343
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 01:37:04 +00:00
Konstantin Shcheglov da6696ba26 Use analyzer Packages.
Change-Id: Ifd8b2bb0c446bf2f7321727bc87179152244f84b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131340
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-13 00:37:14 +00:00
Konstantin Shcheglov 04b5bd9d68 Extract null check in PostfixExpressionResolver.
R=brianwilkerson@google.com

Change-Id: I9063a3cf0dc9e0714020c468f1ceeec13e83384b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131321
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-12 23:17:34 +00:00
Konstantin Shcheglov 92546833e6 Remove packageMap and hasFlutterDependency from Workspace interface.
Change-Id: I8b5c09a0331f038d32a634ee3d1b40dc695b5351
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131282
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-12 18:01:28 +00:00
Konstantin Shcheglov ecebc29e6f Do negation resolution in one method.
R=brianwilkerson@google.com

Change-Id: Idb8b867e1a4fd0123c19caf8776e5f312df854bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131240
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-12 17:53:43 +00:00
Konstantin Shcheglov 489c0be893 Extract PostfixExpressionResolver.
Change-Id: I915453f32d65f74e2ec12dd65bd17620bbb7d4ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131220
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-12 17:53:24 +00:00
Konstantin Shcheglov bd018fbd1a Issue 39694. LHS of ?? should be inferred with a nullable context.
Bug: https://github.com/dart-lang/sdk/issues/39694
Change-Id: I481a8792b0c3587a505263f52f65e7cc4fc4f067
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131210
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-11 21:14:22 +00:00
Konstantin Shcheglov 92f14eee94 Stop passing ContextBuilder to Workspace(s).
R=brianwilkerson@google.com

Change-Id: I101a6c4cd91dcdffb9c76c88e7d6b3995f6109b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131207
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-11 19:45:12 +00:00
Konstantin Shcheglov a62aaddcf2 Use ElementTypeProvider in MethodInvocationResolver.
Change-Id: I1a1ad92e01ae52523d39ad861e7f1a41ca3c2a91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131202
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-11 17:38:17 +00:00
Konstantin Shcheglov 33d468dceb Extract BinaryExpressionResolver.
R=brianwilkerson@google.com

Change-Id: I25ed5c2cea682cd32b324693fc0098dc724d8cb7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131203
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-11 17:30:14 +00:00
Konstantin Shcheglov e6809a3fe3 The invoked type cannot be InterfaceType at this point.
R=brianwilkerson@google.com

Change-Id: I59c0ad9246011cae7e20c00be81aa7d8ac6e222b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130938
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 23:40:02 +00:00
Konstantin Shcheglov a7641ad9ae Use implementation from InvocationInferenceHelper in MethodInvocationResolver.
R=brianwilkerson@google.com

Change-Id: I86e0234b4019bf3d4f9c48af70f4751899639fd4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130937
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 23:27:22 +00:00
Konstantin Shcheglov 1a6667df53 Use analyzer's Packages for GnWorkspace.
R=brianwilkerson@google.com

Change-Id: I4fc619e8025ec5f2375f3a5b8a267c1640dddea1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 23:07:22 +00:00
Konstantin Shcheglov b95a864147 Move FunctionExpressionInvocation inference to InvocationInferenceHelper.
R=brianwilkerson@google.com

Change-Id: Ie25938f0c455c9481b84585d061765a97c104506
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 22:12:12 +00:00
Konstantin Shcheglov 763b682963 Provide packages map to PackageBuildWorkspace.
Change-Id: Ibca7748c5c1260f392e931063cd1990eb26f8117
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130934
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-10 21:51:22 +00:00
Konstantin Shcheglov d9906ab2c1 Remove unused private ForStatementImpl constructor.
R=brianwilkerson@google.com

Change-Id: I288746414b2074167ad7f625a8a053787d383d73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131100
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 18:45:11 +00:00
Konstantin Shcheglov e7ed0819f1 Separate inference with and without type arguments in FunctionExpressionInvocationResolver.
R=brianwilkerson@google.com

Change-Id: I3849750c1cfe181a7b9f8efab3d1587bc2402eda
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130925
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-10 18:21:41 +00:00
Konstantin Shcheglov b38238888a Issue 37122. Fix for downwards inference for FunctionExpressionInvocation.
Bug: https://github.com/dart-lang/sdk/issues/37122
Change-Id: Ie24f3ed5f1d22f2c226143f183dcc004a3a5afbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130961
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-09 23:41:06 +00:00
Konstantin Shcheglov 22fa09a168 Issue 40033. Fix for 'bool' context type for '!' prefix expression.
Bug: https://github.com/dart-lang/sdk/issues/40033
Change-Id: I2c9020f54f794fb7f009bec22af7753e73271c3b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130921
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-09 22:30:46 +00:00
Konstantin Shcheglov 30785388a6 Issue 37122. Fix inference for FunctionExpressionInvocation.
Bug: https://github.com/dart-lang/sdk/issues/37122
Change-Id: I5f8cb9a315bd1231d3cc2275067d11df02194c53
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130920
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-09 22:00:16 +00:00
Konstantin Shcheglov 3f099b05bd Extract PrefixExpressionResolver.
R=brianwilkerson@google.com

Change-Id: Icaee778f5135a802940d925eb4ea0dbf892e164d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130886
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-09 20:57:02 +00:00
Konstantin Shcheglov 29f8e0a7bb First steps in cleaning up FunctionExpressionInvocationResolver.
There is more to do around inference, will continue in following CLs.

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

Change-Id: I7c74a7ddccfdc834883863a2a15c6028cf449f22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130825
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-09 20:19:26 +00:00
Sam Rawlins dd5fa9cf33 Do not complain about a lone unused private constructor
Change-Id: If721b2c86b8e99018a9b32992a8dab437dac865d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130821
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-09 09:58:03 +00:00
Konstantin Shcheglov d745cab70b Extract FunctionExpressionInvocationResolver.
The code is pretty chaotic (evil) at the moment, and will require
more cleaning in following CL(s). Currently this is just what we had,
moved.

R=brianwilkerson@google.com

Change-Id: I9049521a1f3acaae8149e44cdcb83ad3a0742bb3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130743
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-08 22:56:10 +00:00
Konstantin Shcheglov 903966ece4 Extract TypePropertyResolver and use in ElementResolver.
R=brianwilkerson@google.com

Change-Id: Ib7f85a6fbe046b75b228a56f3c64085338a54e89
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130742
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-08 21:23:20 +00:00
Konstantin Shcheglov 02b1b58f6c Inline getType() in TypedLiteralResolver.
R=brianwilkerson@google.com

Change-Id: I0d94837b6b457d7b7f7f121e2870e88081ee583c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-08 18:47:15 +00:00
Janice Collins f55470fdaf Fix a problem where '?.call()' could propagate a non-legacy type.
BUG=https://dartbug.com/39996

Change-Id: Ifc2eb7040ba70b7cf0da392a30a25e5989c925eb
Fixed: 39996
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130581
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2020-01-08 18:44:27 +00:00
Konstantin Shcheglov 68bb711226 Remove now unused 'isNullAware' from ElementResolver.
R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I50f1e4a1382ce0ee37356e04b4ca74e4d55c0eac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130720
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-08 18:39:11 +00:00
Konstantin Shcheglov 06ce8d4fc5 Inline getType() in TypeNameResolver.
R=brianwilkerson@google.com

Change-Id: I59ce8ae65d88ca90b118362f650e88ab68a35183
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130722
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-08 18:36:21 +00:00
Konstantin Shcheglov 1fee7f0263 Remove unnecessary casts to TypeImpl.
Change-Id: I48dcc4a448fa60551905c3d73c8df90a31230738
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130572
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-08 17:22:30 +00:00
Konstantin Shcheglov e85e203e73 Deprecate DartType.name
Change-Id: If3a967bba976aa78493764513edbb3d406b08d27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130625
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-08 07:00:59 +00:00
Konstantin Shcheglov 9e7c401d4f InterfaceTypeImpl has one constructor.
R=brianwilkerson@google.com, paulberry@google.com

Change-Id: Iea88ae0fa035ffa7154460ac61752cf90dc004c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130571
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-08 06:16:23 +00:00
Konstantin Shcheglov accd08fa64 Resolve with Never and Never? receivers.
Change-Id: I388c05d09238a20fc5a84503816b9102c51a573a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-08 04:07:46 +00:00
Paul Berry cf063d3ba4 Analyzer: add some deprecation messages.
Change-Id: I7acce67a51d74c1a7ab043443169f8a62f33e1d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130568
Commit-Queue: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2020-01-08 00:59:29 +00:00
Konstantin Shcheglov b7326f2807 Fix deferredPrefix.loadLibrary() resolution to check for extra arguments.
R=brianwilkerson@google.com

Change-Id: I75cab6bf235110e32e4d9c21d656c12eb42685d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130600
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-01-07 22:30:19 +00:00
Sam Rawlins 6d826735af Report unused constructors
Fixes #35108

Change-Id: I639f1165ec626fc0e8eadf6fa501200ec98af053
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127205
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2020-01-07 21:49:59 +00:00
Konstantin Shcheglov 64bbddd972 Always return a type from getReadType(), possibly dynamic.
R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I816f7e9b232d342b178a12f59db51704be021108
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-07 20:41:19 +00:00
Konstantin Shcheglov 94b69ae149 Fix TypeParameterType.== when reloaded elements and recursive bounds.
Change-Id: I648d8461f4909660af91152c780aa6c581a20525
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130463
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-07 18:34:14 +00:00
Sam Rawlins 4c6757a9ff new analyzer compile-time error: load_library_takes_no_arguments
Fixes #38281

Change-Id: I8a626a9e006a988bcd449e6aa89338afc716ad94
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/129901
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2020-01-07 05:20:12 +00:00
Brian Wilkerson 6e8f0e1035 Unify two diagnostics for documentation purposes and improve the highlighting range associated with them
Change-Id: I02ff33cde1d56a24b2eccf782dc8927f02746235
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130440
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-01-07 01:38:12 +00:00
Brian Wilkerson a96e0bc784 Improve the selection range for return_without_value
Change-Id: I4a1fe0c25d40e5228b2a94af25c6bc671d30a014
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130443
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-01-07 01:35:22 +00:00
Konstantin Shcheglov 1c7518c1b8 Remove duplicate type substitution in TypeSystem.
Change-Id: I2f0434cffa5a16afc43642455343a514edbeddf0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130320
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-06 16:45:00 +00:00