Redundant types results in differences in output
The following two should be identical as an easy case of type inference
```py
a9: List[str] = ["a", "b", "c", "d"]
```
and
```py
a9 = ["a", "b", "c", "d"]
```
Both pass in all langs, however the output is quite different for each.

```diff
diff --git a/tests/cases/coverage.py b/tests/cases/coverage.py
index 936d618..fcc4828 100755
--- a/tests/cases/coverage.py
+++ b/tests/cases/coverage.py
@@ -55,7 +55,7 @@ def show():
     # lists, sets and dict
     a5 = [1, 2, 3]
     print(len(a5))
-    a9: List[str] = ["a", "b", "c", "d"]
+    a9 = ["a", "b", "c", "d"]
     print(len(a9))
     a6 = {1, 2, 3, 4}
     print(len(a6))
diff --git a/tests/expected/coverage.cpp b/tests/expected/coverage.cpp
index 7120f11..c46bfc2 100644
--- a/tests/expected/coverage.cpp
+++ b/tests/expected/coverage.cpp
@@ -64,8 +64,8 @@ inline void show() {
   std::vector<int> a5 = {1, 2, 3};
   std::cout << a5.size();
   std::cout << std::endl;
-  std::vector<std::string> a9 = std::vector<std::string>{
-      std::string{"a"}, std::string{"b"}, std::string{"c"}, std::string{"d"}};
+  std::vector<std::string> a9 = {std::string{"a"}, std::string{"b"},
+                                 std::string{"c"}, std::string{"d"}};
   std::cout << a9.size();
   std::cout << std::endl;
   std::set<int> a6 = std::set<int>{1, 2, 3, 4};
diff --git a/tests/expected/coverage.dart b/tests/expected/coverage.dart
index 92802a4..2a27fc9 100644
--- a/tests/expected/coverage.dart
+++ b/tests/expected/coverage.dart
@@ -49,7 +49,7 @@ show() {
   print(sprintf("%s", [sum1]));
   final a5 = [1, 2, 3];
   print(sprintf("%s", [a5.length]));
-  List<String> a9 = ["a", "b", "c", "d"];
+  final a9 = ["a", "b", "c", "d"];
   print(sprintf("%s", [a9.length]));
   final Set<int> a6 = new Set.from([1, 2, 3, 4]);
   print(sprintf("%s", [a6.length]));
diff --git a/tests/expected/coverage.jl b/tests/expected/coverage.jl
index ab79a56..856d7b0 100644
--- a/tests/expected/coverage.jl
+++ b/tests/expected/coverage.jl
@@ -47,7 +47,7 @@ function show()
     println(join([sum1], " "))
     a5 = [1, 2, 3]
     println(join([length(a5)], " "))
-    a9::Array{String} = ["a", "b", "c", "d"]
+    a9 = ["a", "b", "c", "d"]
     println(join([length(a9)], " "))
     a6 = Set([1, 2, 3, 4])
     println(join([length(a6)], " "))
diff --git a/tests/expected/coverage.kt b/tests/expected/coverage.kt
index 79f2c4a..5f353ed 100644
--- a/tests/expected/coverage.kt
+++ b/tests/expected/coverage.kt
@@ -50,7 +50,7 @@ fun show() {
         val __tmp1 = a5.size
         println("$__tmp1")
     }
-    var a9: Array<String> = arrayOf("a", "b", "c", "d")
+    val a9 = arrayOf("a", "b", "c", "d")
     if (true) {
         val __tmp2 = a9.size
         println("$__tmp2")
diff --git a/tests/expected/coverage.nim b/tests/expected/coverage.nim
index 2dfcd9b..b1784b9 100644
--- a/tests/expected/coverage.nim
+++ b/tests/expected/coverage.nim
@@ -43,7 +43,7 @@ proc show() =
   echo sum1
   let a5 = @[1, 2, 3]
   echo len(a5)
-  let a9: seq[string] = @["a", "b", "c", "d"]
+  let a9 = @["a", "b", "c", "d"]
   echo len(a9)
   let a6 = toHashSet([1, 2, 3, 4])
   echo len(a6)
diff --git a/tests/expected/coverage.rs b/tests/expected/coverage.rs
index f6495f4..fb063c5 100644
--- a/tests/expected/coverage.rs
+++ b/tests/expected/coverage.rs
@@ -78,7 +78,7 @@ pub fn show() {
     println!("{}", sum1);
     let a5: &Vec<i32> = &vec![1, 2, 3];
     println!("{}", a5.len());
-    let a9: Vec<&str> = vec!["a", "b", "c", "d"];
+    let a9: &Vec<&str> = &vec!["a", "b", "c", "d"];
     println!("{}", a9.len());
     let a6: &HashSet<i32> = &[1, 2, 3, 4].iter().cloned().collect::<HashSet<_>>();
     println!("{}", a6.len());
```