Makes the output understandable by VS when compiled by MSVC.
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 2c329b2..62d5501 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -4,6 +4,7 @@
 # here.  Please keep the list sorted by first names.
 
 Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
 Bharat Mediratta <bharat@menalto.com>
 Chandler Carruth <chandlerc@google.com>
 Chris Prince <cprince@google.com>
diff --git a/src/gtest.cc b/src/gtest.cc
index 235ec5a..57ff15a 100644
--- a/src/gtest.cc
+++ b/src/gtest.cc
@@ -2149,7 +2149,11 @@
 
     case TPRT_NONFATAL_FAILURE:
     case TPRT_FATAL_FAILURE:
-      return "Failure";
+#ifdef _MSC_VER
+      return "error: ";
+#else
+      return "Failure\n";
+#endif
   }
 
   return "Unknown result type";
@@ -2162,9 +2166,13 @@
 
   printf("%s", file_name == NULL ? "unknown file" : file_name);
   if (test_part_result.line_number() >= 0) {
+#ifdef _MSC_VER
+    printf("(%d)", test_part_result.line_number());
+#else
     printf(":%d", test_part_result.line_number());
+#endif
   }
-  printf(": %s\n", TestPartResultTypeToString(test_part_result.type()));
+  printf(": %s", TestPartResultTypeToString(test_part_result.type()));
   printf("%s\n", test_part_result.message());
   fflush(stdout);
 }
diff --git a/test/gtest_output_test.py b/test/gtest_output_test.py
index 7ecb4d1..ee766ff 100755
--- a/test/gtest_output_test.py
+++ b/test/gtest_output_test.py
@@ -78,11 +78,12 @@
 
   Returns:
        output with all file location info (in the form of
-       'DIRECTORY/FILE_NAME:LINE_NUMBER: ') replaced by
+       'DIRECTORY/FILE_NAME:LINE_NUMBER: 'or
+       'DIRECTORY\\FILE_NAME(LINE_NUMBER): ') replaced by
        'FILE_NAME:#: '.
   """
 
-  return re.sub(r'.*[/\\](.+)\:\d+\: ', r'\1:#: ', output)
+  return re.sub(r'.*[/\\](.+)(\:\d+|\(\d+\))\: ', r'\1:#: ', output)
 
 
 def RemoveStackTraces(output):
diff --git a/test/gtest_output_test_golden_win.txt b/test/gtest_output_test_golden_win.txt
index 87d1a6a..eb476ec 100644
--- a/test/gtest_output_test_golden_win.txt
+++ b/test/gtest_output_test_golden_win.txt
@@ -1,11 +1,9 @@
 The non-test part of the code is expected to have 2 failures.
 
-gtest_output_test_.cc:#: Failure
-Value of: false
+gtest_output_test_.cc:#: error: Value of: false
   Actual: false
 Expected: true
-gtest_output_test_.cc:#: Failure
-Value of: 3
+gtest_output_test_.cc:#: error: Value of: 3
 Expected: 2
 [==========] Running 40 tests from 16 test cases.
 [----------] Global test environment set-up.
@@ -14,22 +12,19 @@
 [----------] 3 tests from FatalFailureTest
 [ RUN      ] FatalFailureTest.FatalFailureInSubroutine
 (expecting a failure that x should be 1)
-gtest_output_test_.cc:#: Failure
-Value of: x
+gtest_output_test_.cc:#: error: Value of: x
   Actual: 2
 Expected: 1
 [  FAILED  ] FatalFailureTest.FatalFailureInSubroutine
 [ RUN      ] FatalFailureTest.FatalFailureInNestedSubroutine
 (expecting a failure that x should be 1)
-gtest_output_test_.cc:#: Failure
-Value of: x
+gtest_output_test_.cc:#: error: Value of: x
   Actual: 2
 Expected: 1
 [  FAILED  ] FatalFailureTest.FatalFailureInNestedSubroutine
 [ RUN      ] FatalFailureTest.NonfatalFailureInSubroutine
 (expecting a failure on false)
-gtest_output_test_.cc:#: Failure
-Value of: false
+gtest_output_test_.cc:#: error: Value of: false
   Actual: false
 Expected: true
 [  FAILED  ] FatalFailureTest.NonfatalFailureInSubroutine
@@ -38,38 +33,31 @@
 (expecting 2 failures on (3) >= (a[i]))
 i == 0
 i == 1
-gtest_output_test_.cc:#: Failure
-Expected: (3) >= (a[i]), actual: 3 vs 9
+gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 9
 i == 2
 i == 3
-gtest_output_test_.cc:#: Failure
-Expected: (3) >= (a[i]), actual: 3 vs 6
+gtest_output_test_.cc:#: error: Expected: (3) >= (a[i]), actual: 3 vs 6
 [  FAILED  ] LoggingTest.InterleavingLoggingAndAssertions
 [----------] 5 tests from SCOPED_TRACETest
 [ RUN      ] SCOPED_TRACETest.ObeysScopes
 (expected to fail)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and shouldn't have a trace.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and should have a trace.
 Google Test trace:
 gtest_output_test_.cc:#: Expected trace
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and shouldn't have a trace.
 [  FAILED  ] SCOPED_TRACETest.ObeysScopes
 [ RUN      ] SCOPED_TRACETest.WorksInLoop
 (expected to fail)
-gtest_output_test_.cc:#: Failure
-Value of: n
+gtest_output_test_.cc:#: error: Value of: n
   Actual: 1
 Expected: 2
 Google Test trace:
 gtest_output_test_.cc:#: i = 1
-gtest_output_test_.cc:#: Failure
-Value of: n
+gtest_output_test_.cc:#: error: Value of: n
   Actual: 2
 Expected: 1
 Google Test trace:
@@ -77,14 +65,12 @@
 [  FAILED  ] SCOPED_TRACETest.WorksInLoop
 [ RUN      ] SCOPED_TRACETest.WorksInSubroutine
 (expected to fail)
-gtest_output_test_.cc:#: Failure
-Value of: n
+gtest_output_test_.cc:#: error: Value of: n
   Actual: 1
 Expected: 2
 Google Test trace:
 gtest_output_test_.cc:#: n = 1
-gtest_output_test_.cc:#: Failure
-Value of: n
+gtest_output_test_.cc:#: error: Value of: n
   Actual: 2
 Expected: 1
 Google Test trace:
@@ -92,8 +78,7 @@
 [  FAILED  ] SCOPED_TRACETest.WorksInSubroutine
 [ RUN      ] SCOPED_TRACETest.CanBeNested
 (expected to fail)
-gtest_output_test_.cc:#: Failure
-Value of: n
+gtest_output_test_.cc:#: error: Value of: n
   Actual: 2
 Expected: 1
 Google Test trace:
@@ -102,26 +87,22 @@
 [  FAILED  ] SCOPED_TRACETest.CanBeNested
 [ RUN      ] SCOPED_TRACETest.CanBeRepeated
 (expected to fail)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and should contain trace point A.
 Google Test trace:
 gtest_output_test_.cc:#: A
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and should contain trace point A and B.
 Google Test trace:
 gtest_output_test_.cc:#: B
 gtest_output_test_.cc:#: A
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and should contain trace point A, B, and C.
 Google Test trace:
 gtest_output_test_.cc:#: C
 gtest_output_test_.cc:#: B
 gtest_output_test_.cc:#: A
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 This failure is expected, and should contain trace point A, B, and D.
 Google Test trace:
 gtest_output_test_.cc:#: D
@@ -131,88 +112,67 @@
 [----------] 1 test from NonFatalFailureInFixtureConstructorTest
 [ RUN      ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor
 (expecting 5 failures)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #1, in the test fixture c'tor.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in SetUp().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #3, in the test body.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #4, in TearDown.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #5, in the test fixture d'tor.
 [  FAILED  ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor
 [----------] 1 test from FatalFailureInFixtureConstructorTest
 [ RUN      ] FatalFailureInFixtureConstructorTest.FailureInConstructor
 (expecting 2 failures)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #1, in the test fixture c'tor.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in the test fixture d'tor.
 [  FAILED  ] FatalFailureInFixtureConstructorTest.FailureInConstructor
 [----------] 1 test from NonFatalFailureInSetUpTest
 [ RUN      ] NonFatalFailureInSetUpTest.FailureInSetUp
 (expecting 4 failures)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #1, in SetUp().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in the test function.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #3, in TearDown().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #4, in the test fixture d'tor.
 [  FAILED  ] NonFatalFailureInSetUpTest.FailureInSetUp
 [----------] 1 test from FatalFailureInSetUpTest
 [ RUN      ] FatalFailureInSetUpTest.FailureInSetUp
 (expecting 3 failures)
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #1, in SetUp().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in TearDown().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #3, in the test fixture d'tor.
 [  FAILED  ] FatalFailureInSetUpTest.FailureInSetUp
 [----------] 1 test from ExceptionInFixtureCtorTest
 [ RUN      ] ExceptionInFixtureCtorTest.ExceptionInFixtureCtor
 (expecting a failure on thrown exception in the test fixture's constructor)
-unknown file: Failure
-Exception thrown with code 0xc0000005 in the test fixture's constructor.
+unknown file: error: Exception thrown with code 0xc0000005 in the test fixture's constructor.
 [----------] 1 test from ExceptionInSetUpTest
 [ RUN      ] ExceptionInSetUpTest.ExceptionInSetUp
 (expecting 3 failures)
-unknown file: Failure
-Exception thrown with code 0xc0000005 in SetUp().
-gtest_output_test_.cc:#: Failure
-Failed
+unknown file: error: Exception thrown with code 0xc0000005 in SetUp().
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in TearDown().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #3, in the test fixture d'tor.
 [  FAILED  ] ExceptionInSetUpTest.ExceptionInSetUp
 [----------] 1 test from ExceptionInTestFunctionTest
 [ RUN      ] ExceptionInTestFunctionTest.SEH
 (expecting 3 failures)
-unknown file: Failure
-Exception thrown with code 0xc0000005 in the test body.
-gtest_output_test_.cc:#: Failure
-Failed
+unknown file: error: Exception thrown with code 0xc0000005 in the test body.
+gtest_output_test_.cc:#: error: Failed
 Expected failure #2, in TearDown().
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected failure #3, in the test fixture d'tor.
 [  FAILED  ] ExceptionInTestFunctionTest.SEH
 [----------] 4 tests from MixedUpTestCaseTest
@@ -221,8 +181,7 @@
 [ RUN      ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo
 [       OK ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo
 [ RUN      ] MixedUpTestCaseTest.ThisShouldFail
-gtest.cc:#: Failure
-Failed
+gtest.cc:#: error: Failed
 All tests in the same test case must use the same test fixture
 class.  However, in test case MixedUpTestCaseTest,
 you defined test FirstTestFromNamespaceFoo and test ThisShouldFail
@@ -232,8 +191,7 @@
 of the classes to put the tests into different test cases.
 [  FAILED  ] MixedUpTestCaseTest.ThisShouldFail
 [ RUN      ] MixedUpTestCaseTest.ThisShouldFailToo
-gtest.cc:#: Failure
-Failed
+gtest.cc:#: error: Failed
 All tests in the same test case must use the same test fixture
 class.  However, in test case MixedUpTestCaseTest,
 you defined test FirstTestFromNamespaceFoo and test ThisShouldFailToo
@@ -246,8 +204,7 @@
 [ RUN      ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
 [       OK ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
 [ RUN      ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
-gtest.cc:#: Failure
-Failed
+gtest.cc:#: error: Failed
 All tests in the same test case must use the same test fixture
 class.  However, in test case MixedUpTestCaseWithSameTestNameTest,
 you defined test TheSecondTestWithThisNameShouldFail and test TheSecondTestWithThisNameShouldFail
@@ -260,8 +217,7 @@
 [ RUN      ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F
 [       OK ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F
 [ RUN      ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail
-gtest.cc:#: Failure
-Failed
+gtest.cc:#: error: Failed
 All tests in the same test case must use the same test fixture
 class, so mixing TEST_F and TEST in the same test case is
 illegal.  In test case TEST_F_before_TEST_in_same_test_case,
@@ -274,8 +230,7 @@
 [ RUN      ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST
 [       OK ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST
 [ RUN      ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail
-gtest.cc:#: Failure
-Failed
+gtest.cc:#: error: Failed
 All tests in the same test case must use the same test fixture
 class, so mixing TEST_F and TEST in the same test case is
 illegal.  In test case TEST_before_TEST_F_in_same_test_case,
@@ -293,14 +248,12 @@
 [       OK ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure
 [ RUN      ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 non-fatal failure
+gtest.cc:#: error: Expected: 1 non-fatal failure
   Actual: 0 failures
 [  FAILED  ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure
 [ RUN      ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 non-fatal failure
+gtest.cc:#: error: Expected: 1 non-fatal failure
   Actual: 2 failures
 gtest_output_test_.cc:#: Non-fatal failure:
 Failed
@@ -313,8 +266,7 @@
 [  FAILED  ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
 [ RUN      ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 non-fatal failure
+gtest.cc:#: error: Expected: 1 non-fatal failure
   Actual:
 gtest_output_test_.cc:#: Fatal failure:
 Failed
@@ -323,8 +275,7 @@
 [  FAILED  ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
 [ RUN      ] ExpectNonfatalFailureTest.FailsWhenStatementReturns
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 non-fatal failure
+gtest.cc:#: error: Expected: 1 non-fatal failure
   Actual: 0 failures
 [  FAILED  ] ExpectNonfatalFailureTest.FailsWhenStatementReturns
 [----------] 7 tests from ExpectFatalFailureTest
@@ -336,14 +287,12 @@
 [       OK ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure
 [ RUN      ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 fatal failure
+gtest.cc:#: error: Expected: 1 fatal failure
   Actual: 0 failures
 [  FAILED  ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
 [ RUN      ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 fatal failure
+gtest.cc:#: error: Expected: 1 fatal failure
   Actual: 2 failures
 gtest_output_test_.cc:#: Fatal failure:
 Failed
@@ -356,8 +305,7 @@
 [  FAILED  ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
 [ RUN      ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 fatal failure
+gtest.cc:#: error: Expected: 1 fatal failure
   Actual:
 gtest_output_test_.cc:#: Non-fatal failure:
 Failed
@@ -366,18 +314,15 @@
 [  FAILED  ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
 [ RUN      ] ExpectFatalFailureTest.FailsWhenStatementReturns
 (expecting a failure)
-gtest.cc:#: Failure
-Expected: 1 fatal failure
+gtest.cc:#: error: Expected: 1 fatal failure
   Actual: 0 failures
 [  FAILED  ] ExpectFatalFailureTest.FailsWhenStatementReturns
 [----------] Global test environment tear-down
 BarEnvironment::TearDown() called.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected non-fatal failure.
 FooEnvironment::TearDown() called.
-gtest_output_test_.cc:#: Failure
-Failed
+gtest_output_test_.cc:#: error: Failed
 Expected fatal failure.
 [==========] 40 tests from 16 test cases ran.
 [  PASSED  ] 11 tests.