internal/core/export: retain top in embedded scalars

Fixes #718

Change-Id: I9070a8621c513c7adc3d57d2ef7e650e26a308e6
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/8566
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/core/export/expr.go b/internal/core/export/expr.go
index 9673e48..bcb95f0 100644
--- a/internal/core/export/expr.go
+++ b/internal/core/export/expr.go
@@ -290,7 +290,6 @@
 	case adt.Value: // other values.
 		switch v := x.(type) {
 		case nil:
-		case *adt.Top:
 		default:
 			e.values.AddConjunct(adt.MakeRootConjunct(env, x)) // GOBBLE TOP
 
diff --git a/internal/core/export/testdata/embedscalar.txtar b/internal/core/export/testdata/embedscalar.txtar
index 33fd3c0..88c4a80 100644
--- a/internal/core/export/testdata/embedscalar.txtar
+++ b/internal/core/export/testdata/embedscalar.txtar
@@ -12,6 +12,15 @@
         #baz: "foo"
     }
 }
+
+issue718: {
+	#fn: {
+		#a + #b
+		#a: int
+		#b: int
+	}
+	#fn & {_, #a: 1, #b: 2}
+}
 -- out/definition --
 #top: 4
 sub: {
@@ -26,6 +35,18 @@
 		#baz: "foo"
 	}
 }
+issue718: {
+	#fn & {
+		_
+		#a: 1
+		#b: 2
+	}
+	#fn: {
+		#a + #b
+		#a: int
+		#b: int
+	}
+}
 -- out/doc --
 []
 [#top]
@@ -38,6 +59,12 @@
 [sub b #baz]
 [sub b 0]
 [sub b 1]
+[issue718]
+[issue718 #a]
+[issue718 #b]
+[issue718 #fn]
+[issue718 #fn #a]
+[issue718 #fn #b]
 -- out/value --
 == Simplified
 {
@@ -45,6 +72,7 @@
 		a: 3
 		b: [1, 2]
 	}
+	issue718: 3
 }
 == Raw
 {
@@ -61,6 +89,16 @@
 			[1, 2]
 		}
 	}
+	issue718: {
+		3
+		#fn: {
+			#a + #b
+			#a: int
+			#b: int
+		}
+		#a: 1
+		#b: 2
+	}
 }
 == Final
 {
@@ -68,6 +106,7 @@
 		a: 3
 		b: [1, 2]
 	}
+	issue718: 3
 }
 == All
 {
@@ -84,6 +123,16 @@
 			[1, 2]
 		}
 	}
+	issue718: {
+		3
+		#fn: {
+			#a + #b
+			#a: int
+			#b: int
+		}
+		#a: 1
+		#b: 2
+	}
 }
 == Eval
 {
@@ -100,4 +149,14 @@
 			[1, 2]
 		}
 	}
+	issue718: {
+		3
+		#fn: {
+			#a + #b
+			#a: int
+			#b: int
+		}
+		#a: 1
+		#b: 2
+	}
 }
diff --git a/internal/core/export/testdata/merge.txtar b/internal/core/export/testdata/merge.txtar
index 5e0121d..3dd2ac3 100644
--- a/internal/core/export/testdata/merge.txtar
+++ b/internal/core/export/testdata/merge.txtar
@@ -22,11 +22,12 @@
 }
 -- out/definition --
 #A: {
+	_
 	#a: string
 }
-#E: {}
-#F: {}
-#G: {}
+#E: _
+#F: _
+#G: _
 #B: #A & {
 	#E & #F
 	#G
diff --git a/internal/filetypes/types.go b/internal/filetypes/types.go
index e554ebf..41f7aba 100644
--- a/internal/filetypes/types.go
+++ b/internal/filetypes/types.go
@@ -41,5 +41,5 @@
 	return v
 }
 
-// Data size: 1623 bytes.
-var cuegenInstanceData = []byte("\x01\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xacW\xddo\xd4H\x12\xb7CN:\xb7\xb8\x93N\xe2\xf5\xa4\xc2H\x88\x8b8G< \xd0H\x11\x02\x02\xa7\xbc\x1c\xa7\x13\xfb\x84P\xd4c\x97gz\xb1\xbb\xbd\xee6$\"\xf3\xb0\xbb,\xbb\u007f5\xb3\xaa\xee\xf6\u760f\xec&/\x19\xd7WWU\xf7\xaf>\xfe\xb6\xfdu/\xdc\xdb\xfe\x16\x84\u06df\x82\xe0\xc1\xf6\xc7kax]Hm\xb8L\xf1\x98\x1bN\xf4\xf0Z\xb8\xff\u007f\xa5L\xb8\x17\x84\xfb\xff\xe3f\x1d^\x0f\u00bf<\x17\x05\xeap\xfb1\b\x82\u007fn\u007f\xd9\v\u00ff\xbfz\x9d6\x98\xe4\xa2\xf0\x9a\x1f\x83p\xfb!\b\xeel\u007f\xbe\x16\x86\u007f\xed\xe9\x1f\x82p/\xdc\xff//\x91\f\xed[\"\v\x82\xe0\u04cd\x03\xf2$\f\xf7\xc202\xe7\x15\xea$m0\xfct\xe3\x1f\x15O\xdf\xf0\x15\u00b2\x11E\xc6\xd8\xe1!<\x06:\x1fRU\u05e8+%3\rF\x01\x87\xff('\x94\x10;a\xb7\xe8\xdf\x02\u07b3\x88\x8e\x97\xbc\xc4\x05\xf8?mj!W,B\x99\xaaL\xc8U\u01f8\xf5\xccSX$\xa4\xc1\xba\xaa\xd1p#\x94|\xb4\x80['#\n\x8brU\x97\x8f:U\xd2~\xae\xea\x92E\x86\xaf\xf4#{p\xf4\u029d\xf4z\xd1\x1d\xb9a\x1b\x1b\xc41\xe6\xbc)\f\b\rf\x8d@.B\xa31\x83\\\u0560M&$p\x99\xd1/\u0558\x04^\xae\x114\x1a#\xe4JC\x86\x15\u028c\xac(\xd9k\x97*\xa3\xa8\xbd\xe1\x05\xd8\xf8\xe1\xf68\x01\a\xf1\xbfc\xb8h\xbd\xd9\f\xf2y\"s\x05\x19\xe6B\xa2\x86\xb5z\a\u0719\x15\x1al\x9a0\xb3\x0eui\xc1\u0327\x98\x14m\xb4\xf6\x8bE\x197\xbc\xcf\u0281\xa9\x1b\x84\v\xc8y\xa1\x91E5\xe6X\xa3LQ/v\x99\xe9yZ8\u018c\xa6uMP\xe6Ib\xa9T\xc1\"U\xd17/\x9c\x8a\xa3\xa5JjSs!M/\xf7\x06\xb1\xf2y\xd1\vO\x132UeU\xa0\xb1\xcf\xc2\xd3\xcaJ\u0566\xf5\xc0\u0474\xa9\x91\x97\xadS\x8e\x96\xa9T\xf7!:\x1a7\xa6\x16\xcb\u01b8\x00,\u0365\x97\xeeE\xd3\xe5\xd1\xc59\x1f\xec%g\"\xb7\xb90\xa0*\xac\xb9\x8b\xc4I'\xec\xf0\x90T_\xaeQ#\x18,\xab\x82\x1b\xd4\xc0k\xb4\x17 \xe96\x8c\x82%B#E.\x90\xee\x05\xb8\xb1\x8f\xa1V\u0280\xca\xc1\xac\x85&#\xa9\x92\xb9X5\ue104\xd9\x03\xec}\tY5\u01bd\xd3\xfe\xd5\xd0\xd7\x00\x17\aq\xda \xbd\x98S\xa2'I\u00a2h\u00e2\xa8@\x03gp\xe4\u0107\xe9\x98\xdcZ4\xca\u02d4I\x96\x06o\xe8\x8c\xf5Gk\xefJ\xda\u042b%\xa8\xe9D\xa7k,\xb9w\x86t\xf1\u0320\xd4\xeeIX\xe98\xf9^+\x19\xfb\xaf\t\x86)\x1a\xde\x18\u0545\xb3q*\xe7\xbc,.\xabr9\x8d\r\xe1>\xc23z]_M\xb8\x8d\xe03\x19?\xbd7\x97s\x9f\u0543\u065cO\x99\u04dc\x9f\xde\xfbJ\xd6\t\xcf}\xce7,RMe\u0687\xe3\xbczx\xff\xea\xddzx\xff\xb2~\xe1[\xaa\x04\u007f\xfc9\x9f>y|\xf5a<y\xfc\x950rA\xb0\x1f\u0191a\xfe\xa7\u00b8\xff\xe0\xe9\xc3+\x87\xa6\xb5zI|\xb6\xbd\xeeY\vS(y\xa5][\xe9\xa1K\x85\xcc\x17F\u01eaj*\x88FP\x1d\x9c <\x8e\xbb\xb2{\u02a2\x98f\x04G\xa1\x9eK_\xac/\x01\x9eH_-\x95@\xdbS\v\"\x17\x99\x17\x1f\x93\xe5<\u0657\no\x84\xbeXW\r\xa6Tsf\x06T\x83g\x86\xa8+\xe5C\xb0\u0515\"ZU+\xa3:\xd7\xec\x17\x8b\xa8\xfc\xbf8~\xb1\x00:\\\xe3\x0fw-)\xb6\x86Z\x85\xcer\xb5\xf4\xdcj\xd9g\xc8r\x97BV\u02ee\u0477\xe3\r\b\x99\x89\xd4\xf5\x14\x97t\xbaAnlc\xaa\xb1\xaaQ\xa3\xa4a\x038]\u01ea\xe6e\u00ba\xe1h\x017\x8f\xe2\u0619\x940\x1e\x8b C\x83u9\x98\"R\xac\r\x17\xb2\xb5\x03z\xad\x9a\"\xa3\xde5\x9a%\x0e\x0f\u1e6a\xa1\x1d@\xef\x82\xc5w\xc9\xcf'\x92\xc0\xa9\x8f\xea\xb4\x16K\xe7\x9f{uw\xe1\xddZ\xa4k\x10Fc\x91\u06fe\xc7%\xa9\xa6J\xbe\xc5\u06b8\x86\xc9\xe1\xe9w\u03fcF\xc2&\x13]7\xa4\xd99n8\xd8yzn\a\xca\xd1\xc0\xd7\x0eN\x931+\u0395r\xef\u040d\x89N+v\a\xc7\xfe:\xe8~\x1c\"RU\x964\\\x15B\xa2#\x1b\xb5\x8b\x05bX\x1483\x0e\x80\xcezg\x99`\xb7\xaay\xb5\x1eq-\xc513\xbe\x1a\xb12\xbej\x19\x86O8\xc6\x1b\xb4\x18\u007f\u03c6\x15\xc8\x16 \u02e4(w\xb8>t\xcf.f\xf9\x85\x13 \xb8\xec\xf0-\xce,\xdb>\xf5\x1d\xbe\x03\x80\x15\xa0g\xef \x10/\xa0\xabN=L\x9c\x84\x85\x01A\xa3\x97 \x92\x13 \u065d#\x88\x18w\u0670\xd7\xd7gd\xb5\xe3\x92\xfb\x8biP&\xad\xe9P\x10\x13\xb1\xbb\xc0(*\xb8=dEA\xf8\xb2O\xaaWb\xb5]5\xbc]\x9aF\x1c\u007fG\xdd\x0e*3\a\x8e\x86\x10\u007f\x89\xc3G\xb7c\xa8\x17\xf8\x16s\xaaB\xc9+\xf1\x19[\x9e\xfb\r\x86\x1c\x8cl\xef\xe96\x17\u07c3\xa8\x8e\xf1\xa2p\xcc\x04N\fd\n5He@\u0234h2t\x8b\x93\xaaK89N\x98\x95\xb3\x0e\u0675\x8d\x16\u0523nw\xeb`n\xbd\xa7\x1et:\a\xc2n\xe5i\xd1\b\x17\x10\xdb\xf6n\u007f\xb5 \x9cl\x14\xd3\tb\xbc\x97L\xdb\xf2x\v\x9ar\xc7\xfb\u041d\x11\xfb_p{Ja\xd1d[\x9a\xda\x1b\xefMS\xeex[\x9ap7T\x0ee;\x90\r\u70dd|\xf9\x1c\xed\x9c7\x1fUo\u007f\xa7\xce\xf5\x17\xe0rMY\xa7\xfa\xe6\xfe[\xecN\xb6S\xf2y'\xe7\xf3\xb9\xfe\xa27\x93<\xce\xe7o>o}<\xa3\u04ac\x13\x1b\xc3 \xb6\x9bG\xfd\x13j7\xe5\xa1\xf2\xb0|\xd3t\xbc\x9a\xe6\xe5\u646f\xf6co[\xb7F\xaby\x17\xd7p%\x9f\r`6/\x9d_\x1b6\x1e\x18\xbbV\u0482\xa0\x8f\xa0o$\xfd|?A\x8b\x03\t\\\xb4\xf76\x9cn[?\x86Cmo\xbc\xef2\xe3\xe4\x8e\xdc \x18:\xcb\xe3\xc65\xebO'\xd8w\x8fY\xb9\xde\a\xa3\xca/\x19\xec\x05\a=o\x02\x9c\xf9\x16\xd8w\x8e\x89\xf8\x8e\xe9\r\x1b\x97\xdbK\x94<;q\xbb^2>e\xda\x1c>\xeb\xf2\x17\xdb\xc0\xb7jmX\x10\xfc\x1e\x00\x00\xff\xffB\xee2\xf0\xba\x14\x00\x00")
+// Data size: 1624 bytes.
+var cuegenInstanceData = []byte("\x01\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xacW\xddo\xd4H\x12\xb7CN:\xb7\xb8{\xe2\xf5\xa4\xc2H\x88\x8b\xc0\x11\x0f\b4R\x84\x80\xc0)/\xc7\xe9\xc4=!\x14\xf5\xd8\xe5\x99>\xecn\xaf\xbb\r\x89\xc8<\xec.\xcb\xee_\u036c\xaa\xbb\xfd9\xe6#\xbb\xc9K\xc6\xf5\xd5U\xd5\xfd\xab\x8f\xbfm\u007f\xdd\v\xf7\xb6\xbf\x05\xe1\xf6\xa7 x\xb8\xfd\xf1Z\x18^\x17R\x1b.S<\xe6\x86\x13=\xbc\x16\xee\xffW)\x13\xee\x05\xe1\xfe\u007f\xb8Y\x87\u05c3\xf0//D\x81:\xdc~\n\x82\xe0\x1f\xdb_\xf6\xc2\xf0\xef\xaf\u07e4\r&\xb9(\xbc\xe6\xa7 \xdc~\f\x82;\u06df\xaf\x85\xe1_{\xfa\xc7 \xdc\v\xf7\xff\xcdK$C\xfb\x96\u0202 \xf8|\xe3\x1ey\x12\x86{a\x18\x99\xf3\nu\x926\x18~\xbeq\xa3\xe2\xe9[\xbeBX6\xa2\xc8\x18;<\x84'@\xe7C\xaa\xea\x1au\xa5d\xa6\xc1(\xe0\xf0/\xe5\x84\x12b'\xec\x16\xfd[\xc0\a\x16\xd1\U000525f8\x00\xff\xa7M-\xe4\x8aE(S\x95\t\xb9\xea\x18\xb7\x9e{\n\x8b\x844XW5\x1an\x84\x92\x8f\x17p\xebdDaQ\xae\xea\xf2q\xa7J\xda/T]\xb2\xc8\xf0\x95~l\x0f\x8e^\xbb\x93\xde,\xba#7lc\x838\u019c7\x85\x01\xa1\xc1\xac\x11\xc8Eh4f\x90\xab\x1a\xb4\u0244\x04.3\xfa\xa5\x1a\x93\xc0\xab5\x82Fc\x84\\i\u0230B\x99\x91\x15%{\xedRe\x14\xb57\xbc\x00\x1b?\xdc\x1e'\xe0 \xbe\x17\xc3E\xeb\xcdf\x90\xcf\x13\x99+\xc80\x17\x125\xac\xd5{\xe0\u03ac\xd0`\u04c4\x99u\xa8K\vf>\u0164h\xa3\xb5_,\u02b8\xe1}V\x0eL\xdd \\@\xce\v\x8d,\xaa1\xc7\x1ae\x8az\xb1\xcbL\xcf\xd3\xc21f4\xadk\x822O\x12K\xa5\n\x16\xa9\x8a\xbey\xe1T\x1c-UR\x9b\x9a\viz\xb9\xb7\x88\x95\u03cb^x\x9a\x90\xa9*\xab\x02\x8d}\x16\x9eVV\xaa6\xad\a\x8e\xa6M\x8d\xbcl\x9dr\xb4L\xa5\xba\x0f\xd1\u04781\xb5X6\xc6\x05`i.\xbdt/\x9a.\x8f.\xce\xf9`/9\x13\xb9\u0345\x01Ua\xcd]$N:a\x87\x87\xa4\xfaj\x8d\x1a\xc1`Y\x15\u0720\x06^\xa3\xbd\x00I\xb7a\x14,\x11\x1a)r\x81t/\xc0\x8d}\f\xb5R\x06T\x0ef-4\x19I\x95\xcc\u016aq'$\xcc\x1e`\xef\ub512P5\xc6=\xd5\xfe\xe1\xd0\xd7\x00\x1a\aq\xda =\x9aS\xa2'I\u00a2h\u00e2\xa8@\x03gp\xe4\u0107\x19\x99\\\\4J\u0354I\x96\x06\xcf\xe8\x8c\xf5Gk\xefJ\xda\xd0\xc3%\xb4\xe9D\xa7k,\xb9w\x86t\xf1\u0320\xd4\xeeUX\xe98\xf9\xbfV2\xf6_\x13\x18S4\xbc1\xaa\vg\xe3T\xceyY\\V\xe5r\x1a\x1b\x82~\x84g\xf4\xc0\xbe\x99p\x1b\xc1\x172~z\u007f.\xe7>\xab\a\xb39\x9f2\xa79?\xbd\xff\x8d\xac\x13\xa4\xfb\x9coX\xa4\x9a\u02b4\x0f\xc7y\xf5\xe8\xc1\u057b\xf5\xe8\xc1e\xfd\xc2wT\f\xfe\xf8s>}\xfa\xe4\xea\xc3x\xfa\xe4\x1ba\u4090?\x8c#\xc3\xfcO\x85\xf1\xe0\xe1\xb3GW\x0eMk\xf5\x92\xf8l\xdb\xdd\xf3\x16\xa6P\xf2J\xbb\xce\xd2C\x97j\x99\xaf\x8d\x8eU\xd5T\x13\x8d\xa0R8Ax\x1cw\x95\xf7\x94E1\x8d\t\x8eBm\x97\xbeX_\x02<\x91\xbeZ*\x81\xb6\xa7\x16D.2/>&\xcby\xb2/\x15\xde\b}\xb1\xae\x1aL\xa9\xe6\xcc\f\xa8\x06\xcf\fQW\u0287`\xa9+E\xb4\xaaVFu\xae\xd9/\x16Q\axy\xfcr\x01t\xb8\xc6\x1f\xeeZRl\r\xb5\n\x9d\xe5j\xe9\xb9\u0572\u03d0\xe5.\x85\xac\x96]\xafo'\x1c\x102\x13\xa9k+.\xe9t\x83\xdc\xd8\xdeTcU\xa3FI\xf3\x06p\xba\x8eU\xcd\u02c4u\xf3\xd1\x02n\x1e\u01713)a<\x19A\x86\x06\xebr0H\xa4X\x1b.dk\a\xf4Z5EF\xedk4N\x1c\x1e\xc2\vUC;\x83\xde\x05\x8b\uf49fO$\x81S+\xd5i-\x96\xce?\xf7\xea\xee\xc2\xfb\xb5H\xd7 \x8c\xc6\"\xb7\xad\x8fKRM\x95|\x87\xb5q=\x93\u00f3\xff=\xf7\x1a\t\x9b\fu\u075cfG\xb9\xe1l\xe7\u9e5d)G3_;;M&\xad8W\u02bdC7):\xad\xd8\x1d\x1c\xfb\xeb\xa0\xfbq\x88HUY\xd2|U\b\x89\x8el\xd4.\x16\x88aQ\xe0\xcc8\x00:\xeb\x9de\x82\u076a\xe6\xd5z\u0135\x14\xc7\xcc\xf8j\xc4\xca\xf8\xaae\x18>\xe1\x18o\xd0b\xfc\x03\x1bV [\x80,\x93\xa2\xdc\xe1\xfa\xd0=\xbb\x98\xe5\x17N\x80\xe0\xb2\u00f78\xb3l\xfb\xd4w\xf8\x0e\x00V\x80\x9e\xbd\x83@\xbc\x80\xae:\xf50q\x12\x16\x06\x04\x8d^\x82HN\x80dw\x8e b\xdce\xc3^_\x9f\x91\u054eK\xee/\xa6Y\x99\xb4\xa6CAL\xc4\xee\x02\xa3\xa8\xe0\xf6\x90\x15\x05\xe1\xcb>\xa9^\x89\xd5v\xdb\xf0vi\x1aq\xfc\x1du;\xa8\xcc\x1c8\x1aB\xfc%\x0e\x1f\u074e\xa1^\xe0{\u0329\n%\xaf\xc4\x17ly\xeew\x18r0\xb2\xbd\xa7[^|\x0f\xa2:\u018b\xc21\x1381\x90)\xd4 \x95\x01!\u04e2\xc9\xd0\xedN\xaa.\xe1\xe48aV\xce:d77\xdaQ\x8f\xba\xf5\xad\x83\xb9\xf5\x9ez\xd0\xe9\x1c\b\xbb\xad\xa7E#\\@l\u06fb\xfd\u0542p\xb2TL'\x88\xf1j2m\xcb\xe3Eh\xca\x1d\xafDwF\xec\u007f\xc2\xed)\x85E\x93\x85ijo\xbc:M\xb9\xe3\x85i\xc2\xddP9\x94\xed@6\x9c\x0fv\xf2\xe5s\xb4s\xde|T\xbd\xfd\x9d:\xd7_\x80\xcb5e\x9d\xea\x9b\xfbo\xb1;YP\xc9\u775c\xcf\xe7\xfa\xab\xdeL\xf28\x9f\xbf\xf9\xbc\xf5\xf1\x8cJ\xb3Nl\f\x83\xd8n\x1e\xf5O\xa8]\x96\x87\xca\xc3\xf2M\xd3\xf1j\x9a\x97\x9bG\xbe\u068f\xbdm\xdd\x1am\xe7]\\\u00ed|6\x80\u067ct~m\xd8x`\xecZI\v\x82>\x82\xbe\x91\xf4\xf3\xfd\x04-\x0e$p\xd1\xde\xdbp\xbam\xfd\x18\x0e\xb5\xbd\xf1\xbe\u02cc\x93;r\x83`\xe8,\x8f\x1b\u05ec?\x9d`\xdf=f\xe5z\x1f\x8c*\xbff\xb0\x17\x1c\xf4\xbc\tp\xe6[`\xdf9&\xe2;\xa67l\\n/Q\xf2\xec\xc4\xedz\xc9\xf8\x94is\xf8\xa2\xcb_m\x03\u07eb\xb5aA\xf0{\x00\x00\x00\xff\xff\xf8\xf7_\xa3\xbd\x14\x00\x00")