blob: e494ff68b5af9d25a32468a78a86551cacc9dc46 [file] [log] [blame]
// Copyright (c) 2013, 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.
part of dart._internal;
/**
* Implementation of [core.Symbol]. This class uses the same name as
* a core class so a user can't tell the difference.
*
* The purpose of this class is to hide [_name] from user code, but
* make it accessible to Dart platform code via the static method
* [getName].
*/
@pragma('vm:entry-point')
class Symbol implements core.Symbol {
@pragma('vm:entry-point')
final String _name;
external const Symbol(String name);
/**
* Platform-private method used by the mirror system to create
* otherwise invalid names.
*/
const Symbol.unvalidated(this._name);
bool operator ==(Object other) => other is Symbol && _name == other._name;
external int get hashCode;
external toString();
/// Platform-private accessor which cannot be called from user libraries.
static String getName(Symbol symbol) => symbol._name;
external static String computeUnmangledName(Symbol symbol);
}