diff --git a/GOIMPORT/MANIFEST b/GOIMPORT/MANIFEST
index 7260f9f..8a98aab 100644
--- a/GOIMPORT/MANIFEST
+++ b/GOIMPORT/MANIFEST
@@ -5,13 +5,13 @@
 
 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx BUILD
 + 3a01ef1d86a62268741125473fe51568 GOIMPORT/CONFIGURATION
-+ 69508582c0c21c5a0b48e19da184b82b GOIMPORT/MANIFEST
++ 13cc1524a68117f1b2e21d6b392ce811 GOIMPORT/MANIFEST
 = 9fc9e1d6b93fb3971a451d68e21a4437 LICENSE
-+ 68587bd42e304e2816e2da57c99cb7c5 METADATA
++ 0996c12b34e73626ce1c579768154a41 METADATA
 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OWNERS
 = 3ec7645ccbfe13331f1675d54034d89d README.md
-= 5f4dfa7393d07daf243d8d64eb715e8b decoder.go
-= a0c0a0fe9e9c757954bca07a18482c2a decoder_test.go
+= 51f6bda406b8ea454112aa256907ac6f decoder.go
+= 9d0980c4ac284ebb5a1e309c79268ddf decoder_test.go
 = a6c7fbb988e532707b47bbd31daf4676 go.mod
 = 26a95cbd0a533fcf286f3b81e3951000 go.sum
 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx google_init_test.go
@@ -161,9 +161,6 @@
 = 5cd9f072067f7ccf981450d4d394c2be test-fixtures/assign_deep.hcl
 = 29eada54d9d67b8ea3176390af2869f6 test-fixtures/basic.hcl
 = 73261bc19c6516037316808dc9d0befb test-fixtures/basic.json
-= 2cfbed1438cb24a5dee8fa50745c1e71 test-fixtures/basic_bool.hcl
-= 5b4ef779c5007abca3d562b03fea6a4e test-fixtures/basic_bool_int.hcl
-= 495542dc1c801690a401eeec90960d2f test-fixtures/basic_bool_string.hcl
 = 83347a9c40a9d26a7840f3ce646fa275 test-fixtures/basic_int_string.hcl
 = 734b850cc4895d53e0bb0fa899600ad9 test-fixtures/basic_squish.hcl
 = 957a4def52e1468cc7eb0d83b6fdd963 test-fixtures/block_assign.hcl
diff --git a/decoder.go b/decoder.go
index 0f0514f..41d3fbd 100644
--- a/decoder.go
+++ b/decoder.go
@@ -117,17 +117,10 @@
 func (d *decoder) decodeBool(name string, node ast.Node, result reflect.Value) error {
 	switch n := node.(type) {
 	case *ast.LiteralType:
-		switch n.Token.Type {
-		case token.BOOL, token.STRING, token.NUMBER:
-			var v bool
-			s := strings.ToLower(strings.Replace(n.Token.Text, "\"", "", -1))
-			switch s {
-			case "1", "true":
-				v = true
-			case "0", "false":
-				v = false
-			default:
-				return fmt.Errorf("decodeBool: Unknown value for boolean: %s", n.Token.Text)
+		if n.Token.Type == token.BOOL {
+			v, err := strconv.ParseBool(n.Token.Text)
+			if err != nil {
+				return err
 			}
 
 			result.Set(reflect.ValueOf(v))
diff --git a/decoder_test.go b/decoder_test.go
index d81f52f..e05e7eb 100644
--- a/decoder_test.go
+++ b/decoder_test.go
@@ -794,51 +794,6 @@
 	}
 }
 
-func TestDecode_boolString(t *testing.T) {
-	var value struct {
-		Boolean bool
-	}
-
-	err := Decode(&value, testReadFile(t, "basic_bool_string.hcl"))
-	if err != nil {
-		t.Fatalf("err: %s", err)
-	}
-
-	if value.Boolean != true {
-		t.Fatalf("bad: %#v", value.Boolean)
-	}
-}
-
-func TestDecode_boolInt(t *testing.T) {
-	var value struct {
-		Boolean bool
-	}
-
-	err := Decode(&value, testReadFile(t, "basic_bool_int.hcl"))
-	if err != nil {
-		t.Fatalf("err: %s", err)
-	}
-
-	if value.Boolean != true {
-		t.Fatalf("bad: %#v", value.Boolean)
-	}
-}
-
-func TestDecode_bool(t *testing.T) {
-	var value struct {
-		Boolean bool
-	}
-
-	err := Decode(&value, testReadFile(t, "basic_bool.hcl"))
-	if err != nil {
-		t.Fatalf("err: %s", err)
-	}
-
-	if value.Boolean != true {
-		t.Fatalf("bad: %#v", value.Boolean)
-	}
-}
-
 func TestDecode_intString(t *testing.T) {
 	var value struct {
 		Count int
diff --git a/hcl/fmtcmd/fmtcmd_test.go b/hcl/fmtcmd/fmtcmd_test.go
index 4a152ad..0b10f2f 100644
--- a/hcl/fmtcmd/fmtcmd_test.go
+++ b/hcl/fmtcmd/fmtcmd_test.go
@@ -1,4 +1,6 @@
+//go:build !windows
 // +build !windows
+
 // TODO(jen20): These need fixing on Windows but fmt is not used right now
 // and red CI is making it harder to process other bugs, so ignore until
 // we get around to fixing them.
diff --git a/hcl/printer/nodes.go b/hcl/printer/nodes.go
index 677058e..aa54d68 100644
--- a/hcl/printer/nodes.go
+++ b/hcl/printer/nodes.go
@@ -721,10 +721,9 @@
 //
 // A single line object:
 //
-//   * has no lead comments (hence multi-line)
-//   * has no assignment
-//   * has no values in the stanza (within {})
-//
+//   - has no lead comments (hence multi-line)
+//   - has no assignment
+//   - has no values in the stanza (within {})
 func (p *printer) isSingleLineObject(val *ast.ObjectItem) bool {
 	// If there is a lead comment, can't be one line
 	if val.LeadComment != nil {
