diff --git a/clang/unittests/Tooling/CastExprTest.cpp b/clang/unittests/Tooling/CastExprTest.cpp
new file mode 100644
index 0000000..5310c21
--- /dev/null
+++ b/clang/unittests/Tooling/CastExprTest.cpp
@@ -0,0 +1,38 @@
+//===- unittest/Tooling/CastExprTest.cpp ----------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "TestVisitor.h"
+
+using namespace clang;
+
+namespace {
+
+struct CastExprVisitor : TestVisitor<CastExprVisitor> {
+  std::function<void(ExplicitCastExpr *)> OnExplicitCast;
+
+  bool VisitExplicitCastExpr(ExplicitCastExpr *Expr) {
+    if (OnExplicitCast)
+      OnExplicitCast(Expr);
+    return true;
+  }
+};
+
+TEST(CastExprTest, GetSubExprAsWrittenThroughMaterializedTemporary) {
+    CastExprVisitor Visitor;
+    Visitor.OnExplicitCast = [](ExplicitCastExpr *Expr) {
+      auto Sub = Expr->getSubExprAsWritten();
+      EXPECT_TRUE(isa<DeclRefExpr>(Sub))
+        << "Expected DeclRefExpr, but saw " << Sub->getStmtClassName();
+    };
+    Visitor.runOver("struct S1 {};\n"
+                    "struct S2 { operator S1(); };\n"
+                    "S1 f(S2 s) { return static_cast<S1>(s); }\n");
+}
+
+}
