Use aliases and qualify the column names.
SELECT *
FROM SupplierLocation as SL
WHERE SL.SupplierId IN (SELECT S.ThirdPartyId
FROM Supplier as S
WHERE S.Id = @id)
It is perfectly legitimate to include data from various sources in subqueries:
SELECT *, ( select Id + ThirdParty + @Id from Supplier where Id = @Id ) as GuessWhat
FROM SupplierLocation as SL
WHERE SL.SupplierId IN (SELECT S.ThirdPartyId
FROM Supplier as S
WHERE S.Id = @id)
If you aren't explicit about the sources then you may be surprised to find what SQL Server can resolve. It is good practice whenever you use JOINs to qualify all column names.
The Parse tool in SSMS will detect some, but not all, errors. It is a handy starting point.