소스 검색

Add aliases into enums

Jon Skeet 17 년 전
부모
커밋
9deef9baec
2개의 변경된 파일9개의 추가작업 그리고 9개의 파일을 삭제
  1. 2 0
      csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
  2. 7 9
      src/google/protobuf/compiler/csharp/csharp_enum.cc

+ 2 - 0
csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs

@@ -957,6 +957,8 @@ namespace Google.ProtocolBuffers.TestProtos {
     FOO1 = 1,
     BAR1 = 2,
     BAZ = 3,
+    FOO2 = 1,
+    BAR2 = 2,
   }
   
   public enum TestSparseEnum {

+ 7 - 9
src/google/protobuf/compiler/csharp/csharp_enum.cc

@@ -71,20 +71,18 @@ void EnumGenerator::Generate(io::Printer* printer) {
     printer->Print(vars,
       "$name$ = $number$,\r\n");
   }
-  printer->Outdent();
-  printer->Print("}\r\n\r\n");
 
-  // -----------------------------------------------------------------
-  // TODO(jonskeet): Think about aliases!
-  /*
   for (int i = 0; i < aliases_.size(); i++) {
     map<string, string> vars;
-    vars["classname"] = descriptor_->name();
     vars["name"] = aliases_[i].value->name();
-    vars["canonical_name"] = aliases_[i].canonical_value->name();
+    vars["canonical_number"] = SimpleItoa(aliases_[i].canonical_value->number());
     printer->Print(vars,
-      "public static final $classname$ $name$ = $canonical_name$;\r\n");
-  }*/
+      "$name$ = $canonical_number$,\r\n");
+  }
+
+  printer->Outdent();
+  printer->Print("}\r\n\r\n");
+
 }
 
 }  // namespace csharp