Protobuf: fixed comparison of enums in parseFieldFrom, refactored generated code in this function
This commit is contained in:
@@ -6,14 +6,23 @@ EXE = protoc
|
||||
SRCDIR = src
|
||||
BINDIR = bin
|
||||
TESTDIR = test
|
||||
KTPROJECT = protoc-test-project
|
||||
KTOUT = $(KTPROJECT)/src/kotlin
|
||||
JAVAOUT = $(KTPROJECT)/src
|
||||
PROJECTS = protoc-tests
|
||||
|
||||
# Project for Java-backend
|
||||
JVPROJECT = $(PROJECTS)/kt_java_tests
|
||||
JVKTOUT = $(JVPROJECT)/src/kotlin_msg
|
||||
JAVAOUT = $(JVPROJECT)/src
|
||||
|
||||
# Project for JS-backed
|
||||
JSPROJECT = $(PROJECTS)/kt_js_tests
|
||||
JSKTOUT = $(JSPROJECT)/src/kotlin_msg
|
||||
JSOUT = $(JSPROJECT)/src/js_msg
|
||||
|
||||
|
||||
# Build protoc-executable
|
||||
all: $(EXE)
|
||||
|
||||
OBJECTS = $(patsubst $(SRCDIR)/%.cc,$(BINDIR)/%.o,$(wildcard $(SRCDIR)/*.cc))
|
||||
KTARTIFACTS = $(patsubst $(TESTDIR)/%.proto,$(KTOUT)/%.kt,$(wildcard $(TESTDIR)/*.proto))
|
||||
|
||||
all: $(EXE)
|
||||
|
||||
$(EXE): $(BINDIR) $(OBJECTS)
|
||||
$(CXX) $(OBJECTS) -o $(EXE) $(LDFLAGS)
|
||||
@@ -23,28 +32,50 @@ $(BINDIR)/%.o: $(SRCDIR)/%.cc
|
||||
|
||||
include $(wildcard $(BINDIR)/*.d)
|
||||
|
||||
|
||||
# Create auxillary directories
|
||||
$(BINDIR):
|
||||
mkdir -p $(BINDIR)
|
||||
|
||||
$(KTOUT):
|
||||
mkdir -p $(KTOUT)
|
||||
$(JVKTOUT):
|
||||
mkdir -p $(JVKTOUT)
|
||||
|
||||
$(JAVAOUT):
|
||||
mkdir -p $(JAVAOUT)
|
||||
|
||||
$(JSKTOUT):
|
||||
mkdir -p $(JSKTOUT)
|
||||
|
||||
$(JSOUT):
|
||||
mkdir -p $(JSOUT)
|
||||
|
||||
clean:
|
||||
rm -rf $(BINDIR)
|
||||
rm $(EXE)
|
||||
rm -rf $(KTOUT)
|
||||
rm -rf $(JVKTOUT)
|
||||
rm -rf $(JAVAOUT)/java_msg
|
||||
rm -rf $(JSKTOUT)
|
||||
rm -rf $(JSOUT)
|
||||
|
||||
$(KTOUT)/%.kt: $(TESTDIR)/%.proto $(EXE)
|
||||
./protoc --kotlin_out=$(KTOUT) $<
|
||||
# Java-backend tests generation
|
||||
$(JVKTOUT)/%.kt: $(TESTDIR)/%.proto $(EXE)
|
||||
./protoc --kotlin_out=$(JVKTOUT) $<
|
||||
|
||||
java: $(TESTDIR)/*.proto
|
||||
protoc --java_out=$(JAVAOUT) $^
|
||||
|
||||
generate: $(KTOUT) $(JAVAOUT) $(KTARTIFACTS) java
|
||||
JVKT_ARTIFACTS = $(patsubst $(TESTDIR)/%.proto,$(JVKTOUT)/%.kt,$(wildcard $(TESTDIR)/*.proto))
|
||||
|
||||
# JS-backend tests generation
|
||||
$(JSKTOUT)/%.kt: $(TESTDIR)/%.proto $(EXE)
|
||||
./protoc --kotlin_out=$(JSKTOUT) $<
|
||||
|
||||
.PHONY: clean all generate java
|
||||
js: $(TESTDIR)/*.proto
|
||||
protoc --js_out=$(JSOUT) $^
|
||||
|
||||
JS_ARTIFACTS = $(patsubst $(TESTDIR)/%.proto,$(JSKTOUT)/%.kt,$(wildcard $(TESTDIR)/*.proto))
|
||||
|
||||
# Generate proto-messages from proto-sources
|
||||
generate: $(JVKTOUT) $(JAVAOUT) $(JVKT_ARTIFACTS) $(JSKTOUT) $(JSOUT) $(JS_ARTIFACTS) js java
|
||||
|
||||
.PHONY: clean all generate java js
|
||||
|
||||
+7
-2
@@ -315,7 +315,12 @@ void ClassGenerator::generateParseMethods(io::Printer *printer) const {
|
||||
printer->Indent();
|
||||
|
||||
// check that wire type of that field is equal to expected
|
||||
printer->Print(vars, "if (wireType != $kotlinWireType$) { errorCode = 1; return false } \n");
|
||||
printer->Print(vars, "if (wireType.id != $kotlinWireType$.id) {\n");
|
||||
printer->Indent();
|
||||
printer->Print("errorCode = 1\n"
|
||||
"return false\n");
|
||||
printer->Outdent();
|
||||
printer->Print("}\n");
|
||||
|
||||
properties[i]->generateSerializationCode(printer, /* isRead = */ true, /* noTag = */ true, /* isField = */ false);
|
||||
|
||||
@@ -328,7 +333,7 @@ void ClassGenerator::generateParseMethods(io::Printer *printer) const {
|
||||
printer->Outdent();
|
||||
printer->Print("}\n"); // when-clause
|
||||
|
||||
printer->Print("return true");
|
||||
printer->Print("return true\n");
|
||||
printer->Outdent();
|
||||
printer->Print("}\n"); // parseFieldFrom body
|
||||
printer->Print("\n");
|
||||
|
||||
Reference in New Issue
Block a user