Commit Graph

6070 Commits

Author SHA1 Message Date
Konstantin Shcheglov 156de21785 Adapt OptionalConstMixin to summary2.
R=brianwilkerson@google.com

Change-Id: I0648413fb4494e912c328c135677735b4faabbbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100821
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-30 14:20:03 +00:00
Konstantin Shcheglov 0bfe57da52 Store unresolved URIs, but as empty strings.
R=brianwilkerson@google.com

Change-Id: I79e831765f1f35f728a6dee8f85ce46c6ff11fa2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-30 14:12:21 +00:00
Keerti Parthasarathy f3e1480b52 Update manifest checks watnings and corrections
Change-Id: Ic88114cc5472c58c8a848f4c5cc0cb6e7eedbecc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100801
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
2019-04-30 01:39:47 +00:00
Konstantin Shcheglov 532226f024 The library is synthetic when its defining unit is synthetic.
R=brianwilkerson@google.com

Change-Id: I9afbea2214e07f968deb74b490a27090766f8823
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100794
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-30 00:21:27 +00:00
Konstantin Shcheglov c944328528 Refactor types resolution, compute default types for type parameters.
R=brianwilkerson@google.com

Change-Id: If8b89c611c10c0026ec40773aed2a38a5fb37b23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100787
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 21:44:05 +00:00
Brian Wilkerson 950e174799 It is not an error for a late final variable to not have an initializer in nnbd
Change-Id: I11a8367b6e5f3f57b2e78165d59f5114a2b89de3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100784
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 20:54:18 +00:00
Brian Wilkerson 9b3567a466 Rename poorly named error code and improve the message
Change-Id: I9b71b400cb597bc03abe837722dbff8be18465de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100783
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 19:07:59 +00:00
Brian Wilkerson 2f06696655 Include the keyword required when printing elements, with additional cleanup
Change-Id: If252711ece4ed92bb52b9285704d91944a482c4f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100780
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 17:51:50 +00:00
Keerti Parthasarathy 4038f91c38 Change the messaging for the CrOS touchscreen check
Change-Id: I873788752ab9e4d96c1f7e0907d5fb7602d06d0e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100722
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
2019-04-29 16:56:39 +00:00
Paul Berry e2d0f5a50b Add featureSet parameter to Parser constructor.
And deprecate old parser configuration setters.

Change-Id: Ib1507b8d2b20be7c883061e2a92ec9205d6a378f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100664
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 16:42:19 +00:00
Paul Berry 37f915543f Introduce AstFactory.compilationUnit2 with a required featureSet argument.
Change-Id: I8d709fcb9be1b3a89e617a0c7b35f47813787f06
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99966
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-29 15:44:39 +00:00
Brian Wilkerson 3d0825da5d Improve the message when a mixin cannot be applied because the superclass does not implement a required class (issue 36775)
Change-Id: Ifdcf8de365dbdcb50aa70acc8552a302ef2c8e1f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100700
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-04-29 15:13:49 +00:00
Konstantin Shcheglov 160aa37b9f Ignore exporting of unavailable libraries.
R=brianwilkerson@google.com

Change-Id: I1d6ff6c2f67463ce1a664a73e6bdd714a08d14ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100565
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-27 18:05:56 +00:00
Konstantin Shcheglov f598581e41 Support for type parameters in function typed formal parameters.
See also https://github.com/dart-lang/sdk/issues/28515

R=brianwilkerson@google.com

Change-Id: I4365a159a969b5cb77b755a9dad8602a9992ab7a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-27 18:05:16 +00:00
Brian Wilkerson c3669f787e Add a diagnostic for missing arguments associated with required named parameters
Change-Id: I78a46a41ae1c361da0995bb851414e19ef375477
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100632
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-04-26 22:53:44 +00:00
Konstantin Shcheglov 0dc33da6e8 Add LinterContext.canBeConstConstructor().
So, the linter rule does not need to do its own hacks of AST.

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

Bug: https://github.com/dart-lang/linter/issues/1537
Change-Id: Id8d56c0abe077b439d4d67f7dc74b36c08acdf88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100277
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-26 19:27:15 +00:00
Paul Berry b9bf239c65 Revert "Add support for recording context information with analysis errors, with one example"
This reverts commit 6114435ea5.

Reason for revert: Broke angular and angular_analyzer_plugin

Original change's description:
> Add support for recording context information with analysis errors, with one example
> 
> Change-Id: Iba1c48163ce264d85a68bcb9f70e5025a7cdbfbb
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100563
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>

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

Change-Id: I275c6e4473de73199ea9b5e490379ba58aec1d43
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100628
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-26 18:03:57 +00:00
Brian Wilkerson 6114435ea5 Add support for recording context information with analysis errors, with one example
Change-Id: Iba1c48163ce264d85a68bcb9f70e5025a7cdbfbb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100563
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-25 18:41:23 +00:00
Paul Berry 74ac17c13f In BestPracticesVerifier, configure linter context with unit information.
This is necessary because as of
bb2a3ca6f6, LinterContextImpl.canBeConst
uses the linter context's unit information to figure out which
features are enabled, so it can make a correct determination of
whether the expression can be const.

Change-Id: I8987a33eaca206def9f03a74bc442a44b22e80e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100562
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-25 17:42:53 +00:00
Konstantin Shcheglov bba0be2797 Rework type parameters, use correct enclosing element / reference.
R=brianwilkerson@google.com

Change-Id: I7b6300f0eb9e9361155190b08912f6017fe9aaef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100522
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-25 16:38:21 +00:00
Sam Rawlins 05d33b1240 Add WorkspacePackage support for InSummarySource sources
An alternative fix to https://dart-review.googlesource.com/c/sdk/+/94356

In this case, `library.source.fullName` results in a String representation
of a library's package: URI. :(

To accomplish this, each *Workspace's contains() method is refactored from
taking a `String path` to taking a `Source source`, so as to use package: URIs
as much as possible, avoiding looking at the filesystem and poking around for
Workspace markers (BUILD, BUILD.gn, WORKSPACE, .jiri-root, etc). This avoids
the issue with InSummarySource sources, which have a non-path `.fullName`, but
have a valid `.uri`.

These issues were found when trying to enforce @sealed internally.

Change-Id: Ia46f28aa7aad0fc4483a180fa47f1e509402da6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/94985
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-25 16:08:43 +00:00
Konstantin Shcheglov a0a51a7cde Resynthesize fields.
R=brianwilkerson@google.com

Change-Id: I79110c2e2316eebe349604f24e8b6073e40f3458
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100465
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-25 02:55:17 +00:00
Brian Wilkerson f3e86852de Fix the order of arguments when composing an error message (issue 36732)
Change-Id: I72799def160a78cfa5673681c8ff55a60a4a24e7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100406
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 20:36:15 +00:00
Konstantin Shcheglov f04cac8fbd Implement inheritsCovariant.
R=brianwilkerson@google.com

Change-Id: Ieedcec9e51ad7c3e1087d114522b577998181c1b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100407
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 20:29:05 +00:00
Brian Wilkerson 2cadc90ec5 Add summary support for isLate
Change-Id: I21fe14778e24477f234e2a1a1fe65a23ebd05e7f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100274
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 20:23:45 +00:00
Konstantin Shcheglov a28d5e7a0f Rework reportTypeErrorForNode() to work even when FunctionType does not have an element.
R=brianwilkerson@google.com

Change-Id: I5fa122e9e44162a53c3b2a223e7f76dd96849063
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100463
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-24 20:13:16 +00:00
Konstantin Shcheglov 91e9962699 Don't report libraries that became parts as changed libraries.
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/36725
Change-Id: Idea33b07e513147930d1a41a3b3c8718066ce817
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100461
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-24 19:24:15 +00:00
Konstantin Shcheglov ec09fab85a Create elements for @prefix in LInkedElementFactory.
R=brianwilkerson@google.com

Change-Id: I432cf7119370791c3548372d7f83a5e75f673a48
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100462
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 19:06:20 +00:00
Konstantin Shcheglov 2c77aae6b3 Support for LibraryElementImpl.hasExtUri
R=brianwilkerson@google.com

Change-Id: Ie74b361ca6d68253421731936d2868f7e9ef615c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100405
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 19:06:14 +00:00
Konstantin Shcheglov c3e7859035 Store raw elements for parameters.
R=brianwilkerson@google.com

Change-Id: I491f75cd237778d5145346ff420fedb87b305536
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100440
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 18:19:17 +00:00
Paul Berry c5e57cc078 Plumb FeatureSet through resolver
Change-Id: I796b09469c2167122f535718e5ffacb1dc4dd012
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100400
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-24 17:21:37 +00:00
Paul Berry 8516ad8256 Sort declarations in pkg/analyzer/lib/src/dart/sdk/sdk.dart
Change-Id: Iba2941a43288821e1cd13b32e1d462d7f04465dd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100401
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>
2019-04-24 17:10:27 +00:00
Konstantin Shcheglov db8f0090a5 Separate mixins into @mixin, build GenericTypeAlias.
R=brianwilkerson@google.com

Change-Id: I5ac649978607d1369b4c06ccd330361b973a9c05
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100322
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-04-24 05:24:56 +00:00
Konstantin Shcheglov b5769936a9 Perform mixin inference during types building.
R=brianwilkerson@google.com

Change-Id: Id6f685be40ea7cf8100d635208fd6327df5e390e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100276
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-24 00:14:57 +00:00
Paul Berry 4624419736 Support UI-as-code in deprecated parse functions.
Fixes #36724.

Change-Id: Iff8277c0e08b11ec815426b1940767076f4141ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100278
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-23 23:19:25 +00:00
Konstantin Shcheglov e695bc3c6d Record type inference errors for fields and parameters.
R=brianwilkerson@google.com

Change-Id: I1d6856eac8ecab4bdb7c5290f1cdb296b2d6db6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100271
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-23 21:04:46 +00:00
Brian Wilkerson c66a67c4a3 Rename isLazy to isLate to reflect change in keyword
Change-Id: Ic4891aa7a9d4d16719cb23a3f5e4afc928087960
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100267
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-04-23 19:36:25 +00:00
Konstantin Shcheglov b9be35b3fc Perform override and initializer inference at the same time when required.
R=brianwilkerson@google.com

Change-Id: I54cf4d1e343439494e10cbfe2d5016cb36120df2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100269
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-23 19:25:59 +00:00
Konstantin Shcheglov 594a0ef7a7 Perform instantiateToBounds() even for not simply bounded types.
Apparently my previous understanding was wrong.

R=brianwilkerson@google.com

Change-Id: I17ccce93d8e6b8744eaf05c80782ae4f1fe4a414
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100090
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-23 17:39:08 +00:00
Brian Wilkerson b4d17f2eee Add diagnostics related to default values
Change-Id: I4b30580e34fbf302a53778010fada54a2e100409
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99887
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-04-23 17:16:50 +00:00
Paul Berry cee1e41fe8 Plumb new FeatureSet class into Scanner.
And change clients of the scanner (within the SDK) to use it.

Long term, it would be better to store the FeatureSet object directly
in the Scanner and remove the existing flags `enableGtGt` and
`enableNonNullable`.  However there are analyzer clients that
currently use these flags.  So for now, we simply plumb in the
FeatureSet as a new way of setting AstBuilder flags.  Once we've
updated clients to use FeatureSet, we'll publish a breaking version of
the analyzer that removes the old flag API.

Change-Id: I9e662f4ed45668d9acd4f56e42d7d8dae6180d48
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99975
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-23 16:13:43 +00:00
Paul Berry bb2a3ca6f6 Plumb FeatureSet into ConstantVerifier
Change-Id: I40509fffcbb9d772100b1b5e4bc5461dccf5bc27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99978
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-04-23 14:57:32 +00:00
danrubel 81b028de78 cleanup some error codes
* replace CovariantAfterFinal with ModifierOutOfOrder
* replace ConstAndCovariant with ConflictingModifiers

Change-Id: If09551a28d4bffecaf009b4e836a67dfc939c0bb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-04-23 14:22:12 +00:00
Keerti Parthasarathy 1f1592edce Add manifest checks for touchscreen feature
Change-Id: Ib849eccdbad6f41e22dbffeca755099cb3926f8a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100160
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-23 00:32:54 +00:00
Konstantin Shcheglov ef9c25c08b Support codeOffset/Length for CompilationUnit and other nodes.
R=brianwilkerson@google.com

Change-Id: I155662712bf72f2823bb0a3b35b1de341f27670d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99977
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 22:03:39 +00:00
Konstantin Shcheglov 80bed430c8 Extract AnalysisDriver tests that work with summary1 into a separate test class.
R=brianwilkerson@google.com

Change-Id: I4c078d189b3c1bd7c0da3cfbe87490c2cedbc40f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99976
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 21:39:09 +00:00
Konstantin Shcheglov 39662f8108 Set ElementAnnotation for directives.
R=brianwilkerson@google.com

Change-Id: Idfd06b4bd987796e32982083d2a4453777a77cda
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99974
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 21:22:09 +00:00
Konstantin Shcheglov c7279d347b Always lazy create TypeParameterTypeImpl.
Also, not every FunctionType has element, so change FunctionTypeImpl.fresh().

R=brianwilkerson@google.com

Change-Id: Id760d2f94d6fc0c4dad56a1d139068177cce8a0e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99973
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 21:08:38 +00:00
Konstantin Shcheglov 27b64953d5 Fixes for applying resolution for fields metadata.
R=brianwilkerson@google.com

Change-Id: I6154b5dc78b802cc9ebe184132f697fc8a7c4b02
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100088
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 20:56:21 +00:00
Konstantin Shcheglov 385406ac92 Give LinkedElementFactory its AnalysisSession, fixes for nameOffset.
R=brianwilkerson@google.com

Change-Id: I0cf24dd2b1662fbe50478aea6e21da874d83598f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99971
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-04-22 20:56:10 +00:00