1114d0c30f
In preparation for fixing https://github.com/dart-lang/sdk/issues/51812 Change-Id: I810be0a0330f0bf90fc1230b5a2d17f695d6e46b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292007 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
30 lines
757 B
Dart
30 lines
757 B
Dart
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'dart:math' show pi;
|
|
|
|
abstract class Shape {}
|
|
|
|
class Square implements Shape {
|
|
final double length;
|
|
Square(this.length);
|
|
}
|
|
|
|
class Circle implements Shape {
|
|
final double radius;
|
|
Circle(this.radius);
|
|
}
|
|
|
|
double calculateArea(Shape shape) => switch (shape) {
|
|
Square(length: var l) when l >= 0 => l * l,
|
|
Circle(radius: var r) when r >= 0 => pi * r * r,
|
|
Square(length: var l) when l < 0 => -1,
|
|
Circle(radius: var r) when r < 0 => -1,
|
|
Shape() => 0
|
|
};
|
|
|
|
testMain() {
|
|
calculateArea(Circle(-123));
|
|
}
|