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
|
SRCDIR = src
|
||||||
BINDIR = bin
|
BINDIR = bin
|
||||||
TESTDIR = test
|
TESTDIR = test
|
||||||
KTPROJECT = protoc-test-project
|
PROJECTS = protoc-tests
|
||||||
KTOUT = $(KTPROJECT)/src/kotlin
|
|
||||||
JAVAOUT = $(KTPROJECT)/src
|
# 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))
|
OBJECTS = $(patsubst $(SRCDIR)/%.cc,$(BINDIR)/%.o,$(wildcard $(SRCDIR)/*.cc))
|
||||||
KTARTIFACTS = $(patsubst $(TESTDIR)/%.proto,$(KTOUT)/%.kt,$(wildcard $(TESTDIR)/*.proto))
|
|
||||||
|
|
||||||
all: $(EXE)
|
|
||||||
|
|
||||||
$(EXE): $(BINDIR) $(OBJECTS)
|
$(EXE): $(BINDIR) $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) -o $(EXE) $(LDFLAGS)
|
$(CXX) $(OBJECTS) -o $(EXE) $(LDFLAGS)
|
||||||
@@ -23,28 +32,50 @@ $(BINDIR)/%.o: $(SRCDIR)/%.cc
|
|||||||
|
|
||||||
include $(wildcard $(BINDIR)/*.d)
|
include $(wildcard $(BINDIR)/*.d)
|
||||||
|
|
||||||
|
|
||||||
|
# Create auxillary directories
|
||||||
$(BINDIR):
|
$(BINDIR):
|
||||||
mkdir -p $(BINDIR)
|
mkdir -p $(BINDIR)
|
||||||
|
|
||||||
$(KTOUT):
|
$(JVKTOUT):
|
||||||
mkdir -p $(KTOUT)
|
mkdir -p $(JVKTOUT)
|
||||||
|
|
||||||
$(JAVAOUT):
|
$(JAVAOUT):
|
||||||
mkdir -p $(JAVAOUT)
|
mkdir -p $(JAVAOUT)
|
||||||
|
|
||||||
|
$(JSKTOUT):
|
||||||
|
mkdir -p $(JSKTOUT)
|
||||||
|
|
||||||
|
$(JSOUT):
|
||||||
|
mkdir -p $(JSOUT)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BINDIR)
|
rm -rf $(BINDIR)
|
||||||
rm $(EXE)
|
rm $(EXE)
|
||||||
rm -rf $(KTOUT)
|
rm -rf $(JVKTOUT)
|
||||||
rm -rf $(JAVAOUT)/java_msg
|
rm -rf $(JAVAOUT)/java_msg
|
||||||
|
rm -rf $(JSKTOUT)
|
||||||
|
rm -rf $(JSOUT)
|
||||||
|
|
||||||
$(KTOUT)/%.kt: $(TESTDIR)/%.proto $(EXE)
|
# Java-backend tests generation
|
||||||
./protoc --kotlin_out=$(KTOUT) $<
|
$(JVKTOUT)/%.kt: $(TESTDIR)/%.proto $(EXE)
|
||||||
|
./protoc --kotlin_out=$(JVKTOUT) $<
|
||||||
|
|
||||||
java: $(TESTDIR)/*.proto
|
java: $(TESTDIR)/*.proto
|
||||||
protoc --java_out=$(JAVAOUT) $^
|
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();
|
printer->Indent();
|
||||||
|
|
||||||
// check that wire type of that field is equal to expected
|
// 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);
|
properties[i]->generateSerializationCode(printer, /* isRead = */ true, /* noTag = */ true, /* isField = */ false);
|
||||||
|
|
||||||
@@ -328,7 +333,7 @@ void ClassGenerator::generateParseMethods(io::Printer *printer) const {
|
|||||||
printer->Outdent();
|
printer->Outdent();
|
||||||
printer->Print("}\n"); // when-clause
|
printer->Print("}\n"); // when-clause
|
||||||
|
|
||||||
printer->Print("return true");
|
printer->Print("return true\n");
|
||||||
printer->Outdent();
|
printer->Outdent();
|
||||||
printer->Print("}\n"); // parseFieldFrom body
|
printer->Print("}\n"); // parseFieldFrom body
|
||||||
printer->Print("\n");
|
printer->Print("\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user