| Index: pkg/dev_compiler/lib/src/compiler/code_generator.dart
 | 
| diff --git a/pkg/dev_compiler/lib/src/compiler/code_generator.dart b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
 | 
| index 361f5ec0198127d03ab3f0f684ebeaa356228e5d..9bc283942e440cc52660be88e65e4049721f2f78 100644
 | 
| --- a/pkg/dev_compiler/lib/src/compiler/code_generator.dart
 | 
| +++ b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
 | 
| @@ -124,6 +124,7 @@ class CodeGenerator extends GeneralizingAstVisitor
 | 
|    final ClassElement numClass;
 | 
|    final ClassElement objectClass;
 | 
|    final ClassElement stringClass;
 | 
| +  final ClassElement symbolClass;
 | 
|  
 | 
|    ConstFieldVisitor _constants;
 | 
|  
 | 
| @@ -164,6 +165,7 @@ class CodeGenerator extends GeneralizingAstVisitor
 | 
|          nullClass = _getLibrary(c, 'dart:core').getType('Null'),
 | 
|          objectClass = _getLibrary(c, 'dart:core').getType('Object'),
 | 
|          stringClass = _getLibrary(c, 'dart:core').getType('String'),
 | 
| +        symbolClass = _getLibrary(c, 'dart:_internal').getType('Symbol'),
 | 
|          dartJSLibrary = _getLibrary(c, 'dart:js');
 | 
|  
 | 
|    LibraryElement get currentLibrary => _loader.currentElement.library;
 | 
| @@ -5192,11 +5194,17 @@ class CodeGenerator extends GeneralizingAstVisitor
 | 
|    @override
 | 
|    visitSymbolLiteral(SymbolLiteral node) {
 | 
|      JS.Expression emitSymbol() {
 | 
| -      // TODO(vsm): When we canonicalize, we need to treat private symbols
 | 
| -      // correctly.
 | 
| +      // TODO(vsm): Handle qualified symbols correctly.
 | 
| +      var last = node.components.last.toString();
 | 
|        var name = js.string(node.components.join('.'), "'");
 | 
| -      return js
 | 
| -          .call('#.new(#)', [_emitConstructorAccess(types.symbolType), name]);
 | 
| +      if (last.startsWith('_')) {
 | 
| +        var nativeSymbol = _emitPrivateNameSymbol(currentLibrary, last);
 | 
| +        return js.call('new #.es6(#, #)',
 | 
| +            [_emitConstructorAccess(symbolClass.type), name, nativeSymbol]);
 | 
| +      } else {
 | 
| +        return js
 | 
| +            .call('#.new(#)', [_emitConstructorAccess(types.symbolType), name]);
 | 
| +      }
 | 
|      }
 | 
|  
 | 
|      return _emitConst(emitSymbol);
 | 
| 
 |