@@ -47,6 +47,14 @@ auto Binder::control() const -> Control* {
4747  return  unit_ ? unit_->control () : nullptr ;
4848}
4949
50+ auto  Binder::is_parsing_c () const  {
51+   return  unit_->language () == LanguageKind::kC ;
52+ }
53+ 
54+ auto  Binder::is_parsing_cxx () const  {
55+   return  unit_->language () == LanguageKind::kCXX ;
56+ }
57+ 
5058auto  Binder::reportErrors () const  -> bool { return  reportErrors_; }
5159
5260void  Binder::setReportErrors (bool  reportErrors) {
@@ -344,13 +352,15 @@ void Binder::bind(DecltypeSpecifierAST* ast) {
344352
345353void  Binder::bind (EnumeratorAST* ast, const  Type* type,
346354                  std::optional<ConstValue> value) {
347-   auto  symbol = control ()->newEnumeratorSymbol (scope (), ast->identifierLoc );
348-   ast->symbol  = symbol;
355+   if  (is_parsing_cxx ()) {
356+     auto  symbol = control ()->newEnumeratorSymbol (scope (), ast->identifierLoc );
357+     ast->symbol  = symbol;
349358
350-   symbol->setName (ast->identifier );
351-   symbol->setType (type);
352-   ast->symbol ->setValue (value);
353-   scope ()->addSymbol (symbol);
359+     symbol->setName (ast->identifier );
360+     symbol->setType (type);
361+     ast->symbol ->setValue (value);
362+     scope ()->addSymbol (symbol);
363+   }
354364
355365  if  (auto  enumSymbol = symbol_cast<EnumSymbol>(scope ()->owner ())) {
356366    auto  enumeratorSymbol =
@@ -361,6 +371,10 @@ void Binder::bind(EnumeratorAST* ast, const Type* type,
361371
362372    auto  parentScope = enumSymbol->enclosingScope ();
363373    parentScope->addSymbol (enumeratorSymbol);
374+ 
375+     if  (!is_parsing_cxx ()) {
376+       ast->symbol  = enumeratorSymbol;
377+     }
364378  }
365379}
366380
0 commit comments