Skip to content

Commit e5516bf

Browse files
committed
Allow exports as toplevel statements
1 parent 0cb8f3e commit e5516bf

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

compiler/src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ object desugar {
10261026
case stat: TypeDef if stat.mods.is(Opaque) => stat.name
10271027
}
10281028
def needsObject(stat: Tree) = stat match {
1029-
case _: ValDef | _: PatDef | _: DefDef => true
1029+
case _: ValDef | _: PatDef | _: DefDef | _: Export => true
10301030
case stat: ModuleDef =>
10311031
stat.mods.is(ImplicitOrImplied) || opaqueNames.contains(stat.name.stripModuleClassSuffix.toTypeName)
10321032
case stat: TypeDef => !stat.isClassDef || stat.mods.is(ImplicitOrImplied)

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2773,6 +2773,8 @@ object Parsers {
27732773
}
27742774
else if (in.token == IMPORT)
27752775
stats ++= importClause(IMPORT, Import)
2776+
else if (in.token == EXPORT)
2777+
stats ++= importClause(EXPORT, Export.apply)
27762778
else if (in.token == AT || isDefIntro(modifierTokens))
27772779
stats +++= defOrDcl(in.offset, defAnnotsMods(modifierTokens))
27782780
else if (!isStatSep) {

docs/docs/internals/syntax.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@ EnumCase ::= ‘case’ (id ClassConstr [‘extends’ ConstrApps]] |
406406
407407
TopStatSeq ::= TopStat {semi TopStat}
408408
TopStat ::= Import
409+
| Export
409410
| {Annotation [nl]} {Modifier} Def
410411
| Packaging
411412
| PackageObject

0 commit comments

Comments
 (0)