Program: 29507
Project: 29507
Buggy source:
public void testLogicalOps(){
  String testTemplateContent=constructTemplateSource("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
  SoyFileSetNode soyTree=SoyFileSetParserBuilder.forFileContents(testTemplateContent).declaredSyntaxVersion(SyntaxVersion.V2_0).doRunInitialParsingPasses(false).typeRegistry(typeRegistry).parse().fileSet();
  createResolveNamesVisitor(SyntaxVersion.V2_0).exec(soyTree);
  createResolveExpressionTypesVisitor(SyntaxVersion.V2_0).exec(soyTree);
  List<SoyType> types=getCapturedTypes(soyTree);
  assertThat(types.get(0)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(1)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(2)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(3)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(4)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(5)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(6)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(7)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(8)).isEqualTo(BoolType.getInstance());
  soyTree=SoyFileSetParserBuilder.forFileContents(testTemplateContent).declaredSyntaxVersion(SyntaxVersion.V2_3).doRunInitialParsingPasses(false).typeRegistry(typeRegistry).parse().fileSet();
  createResolveNamesVisitor(SyntaxVersion.V2_3).exec(soyTree);
  createResolveExpressionTypesVisitor(SyntaxVersion.V2_3).exec(soyTree);
  types=getCapturedTypes(soyTree);
  assertThat(types.get(0)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(1)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(2)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(3)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(4)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(5)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(6)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(7)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(8)).isEqualTo(BoolType.getInstance());
}

Fixed version (ground truth):
public void testLogicalOps(){
  String testTemplateContent=constructTemplateSource("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
  SoyFileSetNode soyTree=SoyFileSetParserBuilder.forFileContents(testTemplateContent).declaredSyntaxVersion(SyntaxVersion.V2_0).doRunInitialParsingPasses(false).typeRegistry(typeRegistry).parse().fileSet();
  new ResolveNamesVisitor(ExplodingErrorReporter.get()).exec(soyTree);
  createResolveExpressionTypesVisitor(SyntaxVersion.V2_0).exec(soyTree);
  List<SoyType> types=getCapturedTypes(soyTree);
  assertThat(types.get(0)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(1)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(2)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(3)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(4)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(5)).isEqualTo(UnknownType.getInstance());
  assertThat(types.get(6)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(7)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(8)).isEqualTo(BoolType.getInstance());
  soyTree=SoyFileSetParserBuilder.forFileContents(testTemplateContent).declaredSyntaxVersion(SyntaxVersion.V2_3).doRunInitialParsingPasses(false).typeRegistry(typeRegistry).parse().fileSet();
  new ResolveNamesVisitor(ExplodingErrorReporter.get()).exec(soyTree);
  createResolveExpressionTypesVisitor(SyntaxVersion.V2_3).exec(soyTree);
  types=getCapturedTypes(soyTree);
  assertThat(types.get(0)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(1)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(2)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(3)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(4)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(5)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(6)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(7)).isEqualTo(BoolType.getInstance());
  assertThat(types.get(8)).isEqualTo(BoolType.getInstance());
}