E4067

E4067#

Missing main function in the main package.

In MoonBit, packages are divided into two types: main packages and non-main packages. Non-main packages are often used as libraries to provide functionality to other packages. Main packages, on the other hand, are the entry points of the program. Therefore, main package should contains a main function serving as the entry point of the program.

Erroneous example#

Suppose in package main:

main/moon.pkg.json:

{ // Error: Missing main function in the main package.
  "is-main": true
}

main/main.mbt:

type A Int

pub fn A::to_int(self : A) -> Int {
  self._
}

Suggestion#

You can add a main function to the main package:

main/main.mbt:

// ...
fn main {
  let a : A = 42
  println(a.to_int())
}

Alternatively, you can set the package to be a non-main package by setting "is-main" to false in the package configuration file.

main/moon.pkg.json:

{
  "is-main": false
}