Index: src/InitTweak/FixInitNew.cpp
===================================================================
--- src/InitTweak/FixInitNew.cpp	(revision b2e0df3b43fc7a0c8e3a02bf57f4f45e97fbca4e)
+++ src/InitTweak/FixInitNew.cpp	(revision f7ea791d425f47299b98a429dbb034942bcfcc88)
@@ -413,11 +413,10 @@
 	void SelfAssignChecker::previsit( const ast::ApplicationExpr * appExpr ) {
 		auto function = getFunction( appExpr );
-		if ( function->name == "?=?" ) { // doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment
-			if ( appExpr->args.size() == 2 ) {
-				// check for structural similarity (same variable use, ignore casts, etc. - but does not look too deeply, anything looking like a function is off limits)
-				if ( structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
-					SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
-				}
-			}
+		// Doesn't use isAssignment, because ?+=?, etc. should not count as self-assignment.
+		if ( function->name == "?=?" && appExpr->args.size() == 2
+				// Check for structural similarity (same variable use, ignore casts, etc.
+				// (but does not look too deeply, anything looking like a function is off limits).
+				&& structurallySimilar( appExpr->args.front(), appExpr->args.back() ) ) {
+			SemanticWarning( appExpr->location, Warning::SelfAssignment, toCString( appExpr->args.front() ) );
 		}
 	}
